6

Sidekiq 用に Monit をセットアップしようとしています。これまでの構成ファイルの内容は次のとおりです。

 check process sidekiq_site
  with pidfile /var/www/site/tmp/pids/sidekiq.pid
  start program = "bundle exec sidekiq -C /var/www/site/config/sidekiq.yml -P /var/www/site/tmp/pids/sidekiq.pid" with timeout 90 seconds
  if totalmem is greater than 200 MB for 2 cycles then restart # eating up memory?
  group site_sidekiq

問題は、monit reload を実行すると、プログラム「バンドル」が存在しないというメッセージが表示されることです。

誰かがこれに対する解決策を持っていますか?

4

6 に答える 6

4

これを確認してください:https : //groups.google.com/forum/?fromgroups =#!topic / ruby​​versionmanager / 0abB9jlqi_Y rvmを使用している場合、

/bin/su - <username> -c 'bundle exec sidekiq -C /var/www/site/config/sidekiq.yml -P /var/www/site/tmp/pids/sidekiq.pid'

ユーザーからmonitを起動する場合は、.bash_profileに$HOMEを設定します。

または、whisの回答を調べてください:https ://github.com/mperham/sidekiq/issues/506

于 2012-11-29T08:27:26.313 に答える
1

最後に、このソリューションは私にとって魅力的に機能しました:)

check process sidekiq with pidfile path_to_my_pid_file/sidekiq.pid

start program = "/bin/bash -c 'cd my_app_current && source /home/myuser/.rvm/environments/ruby-2.1.2@global && bundle exec sidekiq -e production -P path_to_my_pid_file/sidekiq.pid -L /my_shared_folder_path/log/sidekiq.log -C my_app_current/config/sidekiq.yml --daemon'" as uid "myuser" and gid "myuser"

stop program = "/bin/bash -c 'kill -s INT `cat path_to_my_pid_file/sidekiq.pid`'" as uid "myuser" and gid "myuser"

** 次の点に注意してください:**

  • Ruby のバージョン管理に RVM を使用しています。rbenv で確認してください。
  • ここでは、ここで渡した方法で ruby​​ のグローバルな場所を渡す必要があります:-/home/myuser/.rvm/environments/ruby-2.1.2@global
于 2015-09-29T09:29:30.893 に答える
1

これが私がgithubに書いた要点です:

check process sidekiq_production with pidfile /var/run/sidekiq_production.pid
        depends on redis-server
        start program = "/etc/init.d/sidekiq_production start" with timeout 90 seconds
        stop program = "/etc/init.d/sidekiq_production stop" with timeout 90 seconds
        if totalmem is greater than 200 MB for 2 cycles then restart # eating up memory?
        if 2 restarts within 3 cycles then timeout

Debian で sidekiq の init スクリプトも作成しました: https://gist.github.com/alain75007/5517948

于 2013-05-04T16:36:43.123 に答える
0

これは、rvm を使用して Ubuntu で動作する構成です。

check process sidekiq-th with pidfile /web/vcms/tmp/pids/sidekiq.pid
   start program = "/home/dimon/.rvm/bin/rvm-shell -c '/web/vcms/sidekiq.sh start'"
   stop program = "/bin/bash /web/vcms/sidekiq.sh stop &"   

スクリプトを使用し、主な行は次のとおりです

始める

cd /web/vcms; sidekiq -d -e production &

そして停止

sidekiqctl stop $PIDFILE

私はシェル スクリプトの専門家ではありません。アドバイスをいただければ幸いです =)

于 2015-04-16T10:57:19.757 に答える
0

あなたの問題は、コマンド バンドルが見つからないことです。次のようにmonit構成ファイルを作成する必要があると思います:

check process sidekiq 
  with pidfile /srv/www/projects/myapp/shared/log/production.sidekiq.pid
  start program = "/usr/bin/env /usr/bin/env HOME=/home/USER_NAME RACK_ENV=production RAILS_ENV=production PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd /srv/www/rails/myapp/current; bundle exec sidekiq'" as uid USER_NAME
  stop program = "/usr/bin/env /usr/bin/env HOME=/home/USER_NAME RACK_ENV=production RAILS_ENV=production PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd /
  group myapp_workers

アプリ ディレクトリに移動して bundle を呼び出すと、うまくいくと思います。

于 2014-02-13T09:38:55.847 に答える