Apache 2.2 / MySQL Overload of Ubuntu Server

Я столкнулся с проблемой, и я просто, может казаться, не выясняю, как решить ее; у меня есть обычный Сервер 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 часов).

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

  • Память: 3 ГБ
  • ЦП: 1 - 3300 МГц
  • ОС: Ubuntu 12.04
  • Apache: 2.2 с php 5.3.10 и Mysql 5.5.41

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

high load 1 high load 2

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

Кроме того, я не обеспокоен Использованием оперативной памяти / потребление, так как я могу добавить намного больше RAM, это - ЦП, которым я обеспокоен.

1
задан 21 April 2015 в 11:07
1 ответ

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

3
ответ дан 3 December 2019 в 18:40

Теги

Похожие вопросы