Есть установленая ОС FreeBSD 7.0 и вебсервер Apache 2.2.8 с установленой поддержкой php5. PHP работает как модуль апач. Есть скрипт написаный на php, его выполнение "на глаз" (смотрел командой top) занимает около полсекунды, пр этом процессор получает нагрузку 99. Скрипт неудачный само собой но он помог мне увидеть кое что. Я провел эксперимент: запустил через шелл top, а в другом окне открыл браузер и запустил этот скрипт. Он выполнился, после этого я начал нажимать быстро и подряд кнопку обновить в браузере. При этом наблюдалась следующая картина: количество процессов httpd возростало на глазах, значение загрузки процессора постоянно было на 99, а значения средней загрузки постоянно увеличивались. В итоге за 2-3 минуты таких щелчков по кнопке обновить, я добился такой картины:
при чем это можна можна сказать последнее что я видел, так как после этого ssh перестал отвечать, сайты на сервере не открывались, но сервер пинговался. Через минут 15 он разгрёб эти процессы и всё встало на свои места.last pid: 14914; load averages: 150.78, 109.96, 56.44 up 0+11:22:41 12:15:51
223 processes: 177 running, 46 sleeping
CPU states: 0.0% user, 0.0% nice, 100% system, 0.0% interrupt, 0.0% idle
Mem: 545M Active, 247M Inact, 158M Wired, 36M Cache, 111M Buf, 3748K Free
Swap: 2048M Total, 2048M Free
Так вот проблема в том что это был эксперимент, а если кто-то намеренно такое сделает. Как от этого спастись?
Я пробовал ограничивать время на выполнения скрипта пхп, это не выход. так как при повышеной загружености процессора требуется больше времени на обработку скриптов и они не выполняються.
Подскажите пожалуйста как решить эту проблему?
Заранее большое спасибо за помощь.