У меня есть сервер apache, на котором работают бинарные программы CGI. Эти программы большую часть времени ведут себя нормально, но в редких случаях они занимают всю оперативную память или работают очень долго, занимая 100% ЦП.
Когда это происходит, становится очень сложно подключиться к этой машине по SSH (это CentOS, BTW) и вручную исправить ситуацию.
Есть ли способ заставить apache выполнять бинарные файлы CGI с "хорошим" приоритетом? Я не хочу ограничивать использование ОЗУ или ресурсы ЦП.
Насколько я понимаю, наличие "хорошего" приоритета позволит мне подключиться к машине по SSH (поскольку sshd будет иметь более высокий приоритет), а также, если оперативная память станет проблемой, убийца OOM сначала убьет двоичный файл CGI.
Любые идеи ?
Спасибо!
Для каждого сценария cgi вы можете написать сценарий-оболочку, который настраивает свою удобство и затем запускает сценарий cgi.
#!/bin/sh
renice -n 10 -p $$
exec /path/to/cgi/binary
Однако я не уверен, насколько это повлияет. Сам Линус Торвальдс называет приятным сломанный. Лучшим решением было бы настроить контрольные группы для ограничения доли ЦП или объема памяти, который Apache и его дочерние процессы могут использовать. Дэвид Коллиер-Браун написал некоторые Примеры этого. Я думаю, вам понадобится более новое ядро, чем то, которое включено в CentOS 5. CentOS 6 будет поддерживать cgroups; Вот это документация от Red Hat.