在其实用性结束后杀死Rails进程

时间:2011-04-24 08:06:00

标签: ruby-on-rails ruby nginx ram

我正在使用nginx运行Rails应用程序(确切地说是Tracks)。启动的Rails进程似乎无限期地持续存在?它会停止吗?

我的共享主机上的内存分配率很低,希望能够在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

1 个答案:

答案 0 :(得分:3)

你可以这样做,但你不应该这样做。

Rails(在生产模式下)通常不会泄漏内存,因此重新启动该过程应该没有效果 具有合理负载的健康rails应用程序应该稳定在大约30-70MB RAM并永远保持在那里。

每10分钟重新启动一次意味着每10分钟一些用户会看到一个需要20秒才能加载的页面。或者根本无法加载。
您正在尝试使用Rails,就像使用CGI PHP脚本一样。这并不意味着这样做。

如果你有内存泄漏,你应该尝试找出导致它们的原因,然后解决它。