更具体一点:
我有一台 Debian Squeeze Linux 机器,上面有一个应该可以在全球范围内使用的 Web 应用程序。到目前为止,我每晚都会执行大量耗费资源的 cronjobs(在欧洲),但对区域用户体验没有太大影响。但现在我不能承受服务器随时变慢的后果。
有没有办法强制所有 cron 脚本(cron.daily 等)继承 nice 和 ionice 优先级?
感谢您的贡献!
米格尔
答案1
答案2
您可能希望将 crond 服务设置为在已设置 nice 和 ionice 的情况下运行。
http://b.zekjur.net/2012/09/23/systemd-ionice.html
但是,我还没有测试过这个,所以我无法保证这一点。
如果这不起作用,或者没有提供足够的帮助,您将需要配置 cgroups。
答案3
您可能最好让这些 cron 作业在单独的 Linux 用户下运行,您可以将其限制为较低的优先级。假设您有这样一个用户batchuser
。在您的 中/etc/security/limits.conf
,您可能希望为该用户添加一个条目(-19 到 19,其中 19 是最低优先级):
batchuser - priority 19
然后,此用户启动的任何进程(无论是否来自 cron)都将继承此优先级。无需修改脚本,也无需设置环境或配置文件。
http://manpages.debian.org/cgi-bin/man.cgi?query=limits.conf