PM2 reload 시 서비스 중단되지 않게 하기

MariaDB, MySQL DB

PM2로 node app을 구동 시 reload를 하면 일시적으로 서비스 중단이 발생한다.
새로운 프로세스가 아직 서비스할 준비가 되지 않았는데 PM2가 기존 프로세스를 종료시켜버리기 때문.
단순한 서비스라면 reload에 시간이 걸리지 않지만 db connection이나 시간이 소요되는 로직이 수행되어야 한다면 100% 일시적인 서비스 중단이 있을 수 밖에 없다.

이를 방지하기 위해 app의 listen이 완료되었을 시에 다음 코드를 넣어줌으로 PM2로 하여금 프로세스가 서비스 할 준비가 되었음을 알리면 서비스 중지 없이 reload 할 수 있다.

process.send(‘ready’)

얼마나 간단한가!!

물론 구 프로세스는 종료 전까지 사용자의 요청을 받기 때문에 해당 요청이 종료되기 전에 종료신호를 받는다면 이것 역시 서비스 중단이 발생한다.. 이를 방지하기 위해선,,, 아래 링크 참조.
.
https://engineering.linecorp.com/ko/blog/pm2-nodejs/