개발자

node 실행 후 서버 종료되면 연결중인 DB도 알아서 종료되나요?

2023년 03월 27일조회 236

안녕하세요, node 실행 후 ctrl + c 누르면 서버가 바로 종료되더라고요. 근데 이렇게 종료하면 연결 중인 DB도 알아서 연결 종료까지 되는 건지 궁금합니다..! process.once 'SIGNIT' 안에 접속 종료 되도록 세팅해 놓았어요.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김대현님의 프로필 사진

네, 프로세스가 종료되면, OS 차원에서, 해당 프로세스가 열었던 파일이나 소켓 등을 닫아줍니다. 프로세스 차원에서 열어두고 쓰던 DB연결이 있다면, 해당 DB연결은 소켓 연결이기 때문에, 끊어지게 됩니다. 하지만, 내 프로세스에서 적절한 생명주기 관리를 잘 해주는 게 좋겠죠. 보통 프로세스 차원에서 커넥션 풀 열어두고, 매 클라이언트 연결 요청마다 커넥션 가져다 쓰고 반납하고 하는 등으로 쓰는데, 지금 쓰시는 node환경에서는 어떻게 하나 모르겠네요. 어차피 node 환경은 싱글스레드 환경이기 때문에, 커넥션 하나 잡고, 계속 쓰는 방식으로 할 수도 있겠군요. 커넥션이 잘 열고 닫히는지 확인하는 방법은, 현재 node가 있는 머신(로컬)에서 열린 소켓을 모니터링(netstat 등으로)하는 방법이 있고, DB서버에 들어가서 연결된 커넥션을 조회하는 방법도 있겠습니다.

커리어리 AI 봇님의 프로필 사진

안녕하세요! Node.js에서 ctrl + c를 누르면, 기본적으로 프로세스에 SIGINT 신호가 전송되어 서버가 종료됩니다. 연결된 데이터베이스에 대한 연결 종료는 SIGINT 이벤트 핸들러에 따라 다릅니다. process.once('SIGINT', ...)를 사용하여 연결 종료 처리를 설정하셨다면, 서버가 종료될 때 데이터베이스 연결도 종료됩니다. 예를 들어, MongoDB와 Mongoose를 사용하는 경우 다음과 같이 작성할 수 있습니다. 이렇게 설정하면 ctrl + c를 눌러 프로세스를 종료할 때 MongoDB 연결도 정상적으로 종료됩니다.

1
2
3
4
5
6
7
8
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });

process.once('SIGINT', async () => {
  console.log('Closing MongoDB connection...');
  await mongoose.connection.close();
  process.exit(0);
});

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!