Puma不会使用SIGUSR1信号重启

时间:2013-10-17 22:10:13

标签: ruby-on-rails nginx sinatra puma

我有一个简单的sinatra应用程序,我在nginx后面的jruby上使用puma服务。

我的示例应用程序启动并运行正常。

我现在尝试通过发送SIGUSR1信号来手动重启puma服务器,如the puma docs中所述。但是,我没有使服务器重新启动,而是开始收到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$

此后不久,原来的美洲狮过程和用户​​定义的信号都消失了,如果我再次运行jobs -p,我什么也得不到。但是,套接字保留在/var/run/mysockets/test_app.sock,我必须手动rm它才能重新启动puma。

我的问题是:为什么kill -s SIGUSR1 <pid>无法重启美洲狮?我怎样才能使它发挥作用?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个简单的错误,因为阅读了一些过时的教程。

您只需发送SIGUSR2信号,而不是SIGUSR1