我有一个 Linux 服务器设置 (CentOS7),上面运行着一些 cronjobs。任务不多,但过去一周遇到过两次问题。
它是一个 ruby 进程(更确切地说是 Rake 任务),每小时运行一次。此任务从远程 SQL 服务器运行查询并为每个记录生成文本文件。每 15 分钟可能会生成 5 到 20 个文本文件。然后,这些文本文件(非常小)被发送到 Windows 共享服务器,由单独的应用程序进行处理。
之前发生了什么,我都快要崩溃了,为什么这不仅会产生 4 个新的 Ruby 进程(基于应该运行的 (2) 个 Rake 任务,而不仅仅是完全随机的 ruby 进程),而且会彻底破坏 Linux 服务器上的所有内存,我们不得不进行硬重启。我git commit
对 CentOS 服务器做了一点小改动(实际上更改了一行代码),它产生了 4 个新进程,全部是 Ruby,并杀死了服务器上的内存。
我不是真正的服务器管理员,因此,如果您能提供任何关于如何在将来避免这种情况的见解,我将不胜感激。据我所知,这种生成/挂断问题仅在 Github 提交时发生。
更新:
好的,这看起来不像git commit
是问题的根源,而是 rake 任务作为 cron 作业运行。
这是 cron 任务:
0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/heatfst && RAILS_ENV=production bundle exec rake send_fst_tickets --silent >> /var/www/heatfst/log/cron/standard.log 2>> /var/www/heatfst/log/cron/error.log'
当它运行时,我用检查 CPU% top
,它的 CPU 内存会飙升到约 40%,然后在那里停留一会儿,再也没有回到正常水平(1-2%)。