1

nginxの背後にあるjrubyでpumaを使用して提供している単純なsinatraアプリがあります。

サンプル アプリケーションを起動して実行し、正常に動作しています。

puma docsで説明されているように、SIGUSR1 シグナルを送信して puma サーバーを手動で再起動しようとしています。ただし、サーバーを再起動する代わりに、502 不良ゲートウェイ エラーが発生し始めます。nginx ログには次のように表示されます。

013/10/17 20:40:12 [error] 755#0: *25 connect() to unix:///var/run/mysockets/te 
st_app.sock failed (111: Connection refused) while connecting to upstream, clien 
t: <my ip>, server: jonahtest.example.com, request: "GET / HTTP/1.1", upstr 
eam: "http://unix:///var/run/mysockets/test_app.sock:/", host: "jonahtest.example 
.com"

そのため、再起動する代わりに、動作を停止します。SIGUSR1 シグナルを発行する方法は次のとおりです。

deploy@server:/var/www/webricktest$ jobs -p
863
deploy@server:/var/www/webricktest$ kill -s SIGUSR1 863
deploy@server:/var/www/webricktest$ jobs -p
863
[1]+  User defined signal 1   puma -e production -b unix:///var/run/mysockets/test_app.sock
deploy@server:/var/www/webricktest$

その後まもなく、元の puma プロセスとユーザー定義シグナルの両方が消え、jobs -p再度実行しても何も得られません。ただし、ソケットは /var/run/mysockets/test_app.sock に残っているため、手動rmで puma を再起動する必要があります。

私の質問は: kill -s SIGUSR1 <pid>puma を再起動できないのはなぜですか? どうすればそれを機能させることができますか?

ありがとう!

4

1 に答える 1

1

これは、時代遅れのチュートリアルを読んだことが原因の単純なエラーでした。

SIGUSR2単にシグナルを送信する必要があります。SIGUSR1

于 2013-10-18T07:05:00.903 に答える