Назад | Перейти на главную страницу

Apache 2.2 / MySQL Перегрузка сервера Ubuntu

Я столкнулся с проблемой и просто не могу понять, как ее решить; У меня есть обычный сервер Ubuntu 12.04 с apache 2.2, на котором работает веб-сайт. Время от времени сервер перегружается и перестает отвечать на запросы, выполнение простых команд требует времени, пока сервер не будет перезагружен или apache / mysql не будет перезапущен. (И сам сайт закрывается полностью)

Заглянув в журнал ошибок, я вижу простой

[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>

В обычный день у нас примерно 1700 пользователей / посетителей (В течение 24 часов).

Детали сервера:

Несколько фотографий, которые я получил с помощью взглядов, здесь вы можете увидеть, как apache тихо поглощает много CPU, прежде чем они снова упадут: (Это только с несколькими пользователями на веб-сервере (от 5 до 20))

Как мне избежать сбоев / перегрузки моего сервера? (Я открыт для любого решения, даже переходя на nginx или что-то еще, если это может лучше справиться с нагрузкой).

Кроме того, меня не беспокоит использование / потребление ОЗУ, поскольку я могу добавить намного больше ОЗУ, меня беспокоит процессор.

Ниже приведена ссылка на отличную статью, которая поможет определить правильные настройки для модуля 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

ш ап.ш

Результат будет примерно таким:

Использование памяти Apache (МБ): 1372,6 Средний размер процесса (МБ): 54,9041

Попробуйте выполнить это несколько раз, чтобы сравнить числа; хорошие результаты будут показаны при большой нагрузке на сервер. Теперь, когда вы знаете средний объем памяти, потребляемой Apache, и общий объем памяти вашего сервера, можно рассчитать значение, которое будет использоваться для настройки MaxClients.

Например, если в среднем один процесс Apache потребляет 50 МБ ОЗУ, а ОЗУ сервера - 2 ГБ, а для остальных процессов вы хотите оставить 512 МБ, то: MaxClients = (2 ГБ - 512 МБ) / 50 МБ = 30,72 ~ 30.

Насколько я понимаю, ServerLimit - это то же самое, но хотя параметр MaxClient может быть изменен на ходу без необходимости перезапуска Apache, для вступления в силу нового значения ServerLimit требуется перезапуск Apache.

MaxClients всегда должно быть <= ServerLimit. Чтобы упростить задачу, я установил ServerLimit = MaxClients, рассчитанный по приведенной выше формуле.