我正在使用 nginx 运行一个 Rails 应用程序(确切地说是 Tracks)。启动的 Rails 进程似乎会无限期地持续下去?它应该停止吗?
我的共享主机上的 RAM 分配很低,我希望能够在 10 分钟后终止 Rails 进程。有没有办法在 nginx 或 Passenger 中做到这一点?
与此同时,我每 10 分钟用 cron 运行这个 bash 脚本:
PID=$(ps ax|grep [R]ails.*lytracks | cut -f2 -d" " | head -n1)
if [ $PID ]; then
kill -SIGUSR1 $PID
else
echo Not running
fi
最佳答案
你可以这样做,但你不应该这样做。
Rails(在生产模式下)通常不会泄漏内存,因此重新启动进程应该没有影响。
具有合理负载的健康 Rails 应用程序应该稳定在大约 30-70MB RAM 并永远保持在那里。
每 10 分钟重新启动一次意味着每隔 10 分钟您的一些用户就会看到一个需要 20 秒加载的页面。或者根本无法加载。
您正在尝试像使用 CGI PHP 脚本一样使用 Rails。这不是为了那样做。
如果您有内存泄漏,您应该尝试找出导致它们的原因,然后修复它。
关于ruby-on-rails - 在 Rails 进程结束后终止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5769418/