체인의정석

주기적으로 재시작 하는 node.js 프로그램 만들기 (pm2 ecosystem, crone) 본문

개발/backend

주기적으로 재시작 하는 node.js 프로그램 만들기 (pm2 ecosystem, crone)

체인의정석 2024. 7. 5. 11:29
728x90
반응형

1. pm2 ecosystem 사용해서 만들기

이걸 잘 쓰면 도커를 사용한것과 같이 여러개의 봇들을 잘 관리할 수 있다.

먼저 pm2를 설치한 후에 기본적인 설정 파일을 만들어준다.

아래 사이트를 참고하였다.

https://pm2.keymetrics.io/docs/usage/restart-strategies/

 

PM2 - Restart Strategies

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

 

env의 경우 dev.env로 따로 만들어 두었으며

다음과 같은 파일을 명령을 실행하는 위치 (env와 동일한 위치)에 넣어주면된다.

실행 경로에 해당 파일 넣기

ecosystme.config.js

module.exports = {
    apps: [
      {
        name: 'eventbot',
        script: './script/example.js',
        cron_restart: '*/10 * * * *', // 매 10분마다 실행
        watch: false,
        env: {
          NODE_ENV: 'dev'
        }
      }
    ]
  };

참고로 cron 시간의 경우

https://crontab.guru/every-10-minutes

 

Crontab.guru - The cron schedule expression generator

loading... We created Cronitor because cron itself can't alert you if your jobs fail or never start. Cronitor is easy to integrate and provides you with instant alerts when things go wrong. Sign Up Free

crontab.guru

위의 사이트에서 미리 측정하고 돌려볼 수 있다.

 

2. 일반 pm2 + 특정 시간이 지나면 알아서 멈추도록 하는 로직

  // Terminate the process after a specific time (e.g., 1 hour = 3600000 ms)
  const terminationTime = 360000; // 10 min
  setTimeout(() => {
    console.log("Terminating process after 1 hour");
    process.exit(0); // Graceful exit
  }, terminationTime);

다음 코드를 넣어주면 10분 뒤에 알아서 종료가 되게 되고 pm2는 알아서 재시작을 하게 된다.

728x90
반응형
Comments