Я столкнулся с проблемой, и я просто, может казаться, не выясняю, как решить ее; у меня есть обычный Сервер Ubuntu 12.04 с апачскими 2,2 выполнениями веб-сайта. Время от времени перегрузки сервера и начинают становиться безразличными, простые команды берет возрасты для выполнения, пока сервер не является перезапуском, или apache/mysql перезапущен. (И сам веб-сайт закрывает complety),
При взгляде в журнале ошибок я вижу простое
[error] server reached MaxClients setting, consider raising the MaxClients setting
Сопровождаемый набором mysqli неспособности соединиться
Можно было бы просто предположить, что я должен буду увеличить MaxClients, но я уже сделал это пару раз, и я волнуюсь, что перегружу сервер сам путем установки его слишком высоко, ниже то, как mpm предварительное ветвление в настоящее время устанавливается:
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 10
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 90
</IfModule>
В нормальный день у нас есть примерно 1 700 Пользователей/Посетителей (В течение 24 часов).
Детали сервера:
Несколько изображений, которые я получил со взглядами, здесь Вы видите, что апачское глотание подавляет шумы большого количества ЦП прежде чем они выпадающий снова: (Это только с автомобилем-купе пользователей на веб-сервере (5 - 20)),
Как я избегаю своего катастрофического отказа сервера / перегрузка? (Я открыт для любого решения, даже изменяясь на nginx или что-то еще, если это могло бы обработать загрузку лучше).
Кроме того, я не обеспокоен Использованием оперативной памяти / потребление, так как я могу добавить намного больше RAM, это - ЦП, которым я обеспокоен.
Ниже приведена ссылка на отличную статью, которая поможет определить правильные настройки для модуля mpm_prefork_module.
Идея состоит в том, чтобы запустить сценарий, который покажет вам, сколько памяти потребляется каждым процессом Apache, а затем использовать эту информацию для настройки параметров.
http://cloudinservice.com/tune-apache-performance- using-mpm-prefork-module /
Скрипт: http://cloudinservice.com/wp-content/uploads/2011/03/ap.sh.zip
MaxClients и ServerLimit.
распаковать ap.sh.zip
sh ap.sh
Результат будет примерно таким:
Использование памяти Apache (МБ): 1372,6 Средний размер процесса (МБ): 54,9041
Попробуйте выполнить это несколько раз, чтобы сравнить числа; хорошие результаты будет отображаться, когда сервер находится под большой нагрузкой. Теперь, когда ты знаешь средний объем памяти, потребляемой Apache, и общий объем памяти вашего сервера, можно рассчитать значение, которое будет использоваться для Настройка MaxClients.
Например, если в среднем один процесс Apache потребляет 50 МБ ОЗУ. а ОЗУ сервера составляет 2 ГБ, а для остальных вы хотите оставить 512 МБ процессов, то: MaxClients = (2GB - 512MB) / 50MB = 30,72 ~ 30.
ServerLimit, насколько я понимаю, то же самое, но в то время как MaxClient настройки можно изменить на ходу без перезапуска Apache, для новое значение ServerLimit, чтобы вступить в силу, требуется перезапуск Apache.
MaxClients всегда должно быть <= ServerLimit. Чтобы было проще, я установил ServerLimit = MaxClients, вычисленное по приведенной выше формуле.