2

我通过工头导出了一个新贵脚本,并在 .conf 文件中添加了一行,以便在进程重新启动时发送电子邮件。但是,当我终止测试功能的过程时,它会向我的收件箱发送超过 20 封电子邮件。有谁知道是否有更有效的方法可以做到这一点,或者我是 SOL?

start on starting square-web
stop on stopping square-web
respawn

exec su - deployer -c 'cd /rails/square; echo "Thin 5000 restarted on square.local" | mail jordan@square.org; export PORT=5000; export RAILS_ENV=production; rails s thin -p $PORT >> /var/log/square/web-1.log 2>&1'  
4

1 回答 1

1

问题很可能是rails挂在监听套接字上一段时间。尤其是如果关闭所有套接字并死于 SIGTERM 需要超过 5 秒的时间,就会发生这种情况,因为之后新贵将发送 SIGKILL,这将使这些套接字全部处于 TIME_WAIT 中。

如果您可以让您的侦听器使用 SO_REUSEADDR,那么这就会消失,因为您只需收回 TIME_WAIT 侦听端口。如果您预计事情需要超过 5 秒,您可能还想提高终止超时:

kill timeout 20

如果你只是想减少垃圾邮件,你可以让你的工作睡一会儿,让操作系统有时间关闭监听套接字:

post-stop exec sleep 1
于 2014-05-05T21:24:22.340 回答