在 Rails 进程不再有用后终止它

发布于 2024-11-02 19:34:13 字数 369 浏览 2 评论 0原文

我正在使用 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

I'm running a Rails app (Tracks, to be exact) with nginx. The Rails process that starts seems to persist indefinitely? Is it suppose to stop?

I have a low RAM allotment on my Shared Hosting and want to be able to kill the Rails process after, say, 10 minutes. Is there a way to do this in nginx or Passenger?

In the meantime, I'm running this bash script with cron every 10 minutes:

PID=$(ps ax|grep [R]ails.*lytracks | cut -f2 -d" " | head -n1)

if [ $PID ]; then
    kill -SIGUSR1 $PID
else
    echo Not running
fi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七颜 2024-11-09 19:34:13

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

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

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

如果出现内存泄漏,您应该尝试找出导致内存泄漏的原因,然后修复它。

You can do that, but you shouldn't.

Rails(in production mode) does not normally leak memory, so restarting the process should have no effect.
A healthy rails app with reasonable load should stabilize at about 30-70MB RAM and stay there forever.

Restarting it every 10 minutes means that every 10 minutes some of your users will see a page that takes 20 seconds to load. Or fail to load at all.
You're trying to use Rails like you would use a CGI PHP script. It's not meant to do that.

If you have memory leaks, you should try and find out what's causing them, then fix it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文