我有一个运行一些二进制CGI程序的Apache服务器。 这些程序在大多数情况下都performance得很好,但是在极less数情况下,它们将所有的内存加大,或者运行很长时间,占用100%的CPU。
当发生这种情况时,很难通过SSH连接到该机器(它是CentOS,BTW)并手动修复。
有没有办法让Apache执行“好”优先级的CGI二进制文件? 我不想限制RAM使用情况或CPU资源。
这是我的理解有一个“好”的优先权将允许我SSH的机器(因为sshd将具有更高的优先级),而且,如果RAM成为一个问题,OOM杀手将杀死CGI二进制第一。
有任何想法吗 ?
谢谢!
对于每个cgi脚本,你可以编写一个包装脚本来调整自己的漂亮,然后执行cgi脚本。
#!/bin/sh
renice -n 10 -p $$
exec /path/to/cgi/binary
不过,我不确定这会有多大的影响。 莱纳斯·托沃兹自己打电话好坏。 更好的解决scheme是设置cgroups来限制CPU的份额或Apache及其subprocess可以使用的内存量。 David Collier-Brown写了一些这方面的例子 。 我认为你需要一个比CentOS 5中包含的更新的内核。CentOS 6将支持cgroups; 这里是来自Red Hat的文档。