如何在 Apache 中以“nice”优先级运行 CGI 二进制文件

如何在 Apache 中以“nice”优先级运行 CGI 二进制文件

我有一台运行一些二进制 CGI 程序的 Apache 服务器。这些程序大多数时候运行良好,但极少数情况下它们会占用所有 RAM,或运行时间过长,占用 100% 的 CPU。

当这种情况发生时,通过 SSH 连接到该机器(顺便说一下,它是 CentOS)并手动修复问题变得非常困难。

有没有办法让 apache 以“nice”优先级执行 CGI 二进制文件?我不想限制 RAM 使用率或 CPU 资源。

据我了解,拥有“nice”优先级将允许我通过 SSH 连接到机器(因为 sshd 具有更高的优先级),而且,如果 RAM 成为问题,OOM killer 会首先杀死 CGI 二进制文件。

有任何想法吗 ?

谢谢!

答案1

对于每个 cgi 脚本,您可以编写一个包装脚本来调整其自身的优缺点,然后执行该 cgi 脚本。

#!/bin/sh
renice -n 10 -p $$
exec /path/to/cgi/binary

不过,我不确定这会产生多大效果。Linus Torvalds 自己称其为很好破碎的。更好的解决方案是设置 cgroups 来限制 Apache 及其子进程可以使用的 CPU 或内存量的份额。David Collier-Brown 写了一些例子这个。我认为你需要一个比 CentOS 5 中包含的内核更新的内核。CentOS 6 将支持 cgroups;这里是来自 Red Hat 的文档。

相关内容