내 서버에서 2개의 Ruby-on-Rails 애플리케이션이 실행되고 있습니다. 배포는 Capistrano를 통해 자동화됩니다. 애플리케이션은 Sidekiq을 사용하여 백그라운드 작업을 처리합니다.
나는 2개의 애플리케이션에 대해 두 개의 개별 스크립트를 사용하고 이를 다음 위치에 배치합니다./etc/init.d
deployer@experimental:~$ ls -l /etc/init.d/ | grep sidekiq
-rwxr-xrwx 1 root root 1988 Aug 23 2018 sidekiq_my_app_1
-rwxr-xr-x 1 root root 1993 Aug 23 2018 sidekiq_my_app_2
초기화 스크립트는 표시된 예제 스크립트의 수정된 버전입니다.여기.
다음과 같은 명령을 사용하여 스크립트를 시작/중지/다시 시작합니다.$ service sidekiq_my_app_1
일반적인 상황에서는 다음과 같이 애플리케이션당 하나의 Sidekiq 프로세스만 갖고 싶습니다.
deployer@experimental:~$ ps aux | grep sidekiq
deployer 1645 0.1 3.5 1150452 144188 ? Sl Jul16 4:29 sidekiq 5.0.4 my_app_1 [0 of 10 busy]
deployer 1658 5.4 7.3 1444620 298252 ? Sl Jul16 139:11 sidekiq 4.2.2 my_app_2 [0 of 10 busy]
deployer 22759 0.0 0.0 14516 940 pts/2 S+ 12:31 0:00 grep sidekiq
deployer@experimental:~$
그런데 자동 배포 프로세스 중에 아래와 같이 애플리케이션의 여러 Sidekiq 프로세스가 시작되는 것을 확인했습니다.
deployer@experimental:~$ ps aux | grep sidekiq
deployer 1645 0.1 3.5 1150452 144188 ? Sl Jul16 4:29 sidekiq 5.0.4 my_app_1 [0 of 10 busy]
deployer 1658 5.4 7.3 1444620 298252 ? Sl Jul16 139:11 sidekiq 4.2.2 my_app_2 [0 of 10 busy]
deployer 1907 2.3 8.1 1703424 331276 ? Sl Jul16 150:02 sidekiq 4.2.2 my_app_2 [0 of 10 busy]
deployer 22759 0.0 0.0 14516 940 pts/2 S+ 12:31 0:00 grep sidekiq
deployer@experimental:~$
이로 인해 백그라운드 작업이 예측할 수 없는 동작으로 이어질 수 있습니다.
추가 프로세스를 종료하고 애플리케이션당 하나의 프로세스만 사용하게 되는 위의 문제를 자동으로 해결하기 위한 몇 가지 솔루션을 제안할 수 있는 사람이 있습니까?
또한, 위의 문제에 대해 이메일/SMS를 통해 알림을 받을 수 있도록 몇 가지 해결 방법을 제안해 주시면 큰 도움이 될 것입니다.
감사해요.