我有一个Rails应用程序,其中包括几个计算昂贵的后台作业(图像处理:O)。
我用Sidekiq来管理这些工作。目前,我已经为每个Sidekiq进程设置了5个线程的并发性,下面是我为查看内存使用情况所做的工作:
ps faux | grep sidekiq结果如下:
hommerzi 3874 3.5 5.7 287484 231756 pts/5 Sl+ 17:17 0:10 | \_ sidekiq 2.17.0 imageparzer [3 of 3 busy]然而,我有一种感觉,那就是一定有办法从Rails应用程序中正确地监控这一点,还是我错了?
我的问题是:在这种情况下,我如何监控我的内存使用情况?
发布于 2013-12-13 03:30:24
我的建议是使用Monit (或上帝)来管理您的过程。这适用于数据库、服务器、应用程序,而不仅仅是后台作业。
下面是一个例子:Monit Ruby on Rails Sidekiq
监视应用程序一段时间,并设置实际的内存限制。然后,如果在给定的周期(通常是2分钟的检查)中,某个流程死亡或超过该限制,它将(重新)启动该流程。
您还可以设置一个警报电子邮件地址和一个web前端(使用基本的HTTP auth)。这对于在生产中运行稳定的应用程序是必不可少的。例如,最近我有一个侧翼进程被自己控制住了,并且啃掉了250 up的内存。Monit然后重新启动进程(该进程现在徘徊在150 me左右),并向我发送了一个警报。现在,我可以检查日志/系统,看看为什么会发生这种情况。这一切都发生在我睡着的时候。要比其他方法要好得多:醒来后发现你的服务器正处于失控的进程或服务崩溃的状态。
https://www.digitalocean.com/community/articles/how-to-install-and-configure-monit
https://stackoverflow.com/questions/20557647
复制相似问题