私のサーバーで2つのRuby-on-Railsアプリケーションが実行されています。デプロイは Capistrano によって自動化されます。アプリケーションはSidekiqを使用してバックグラウンドジョブを処理します。
私は2つのアプリケーションに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
一般的な状況では、アプリケーションごとに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:~$
これにより、バックグラウンドジョブが予測不能な動作につながる可能性があります。
追加のプロセスを終了し、アプリケーションごとに1つのプロセスしか使用しない上記の問題を自動的に解決するためのいくつかのソリューションを提案できる人はいますか?
また、上記の問題について電子メール/ SMSで通知を受け取るためにいくつかの解決策を提案してください。
ありがとうございます。