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

Что является узким местом моего сервера Apache?

$netstat -anp | grep :80 | grep TIME_WAIT | wc -l  
840 
$netstat -anp |grep :80 | grep ESTABLISHED | wc -l 
50

использование памяти: 850 МБ / 1000 МБ

apache2.conf содержит ..

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Есть ли какие-либо изменения в конфигурации, которые могут мне помочь или узким местом здесь является только моя оперативная память?
Нужна срочная помощь .. !!

Без дополнительной информации о вашем сервере, конфигурации и приложении сложно дать подробный ответ, но вот несколько общих моментов, которые следует учитывать:

  • 150 MaxClients с 1 ГБ ОЗУ может быть слишком много, особенно с сервером Apache, работающим с PHP. Что может случиться, так это то, что Apache израсходует всю оперативную память и начнет использовать память подкачки, что мгновенно снизит вашу производительность. Лучший способ проверить это в часы пик - проверить вывод «top» и «free» и убедиться, что использование памяти подкачки близко к 0. Если ваша свободная память становится равной нулю, а память подкачки начинает увеличиваться, попробуйте уменьшить MaxClients. Сложность заключается в том, что сервер будет нормально работать с высокими настройками MaxClients, пока вы не достигнете пика трафика, когда начнется использование свопа.
  • Вы можете уменьшить объем памяти, который использует Apache, отключив все неиспользуемые модули. Попробуйте отключить сразу несколько и протестируйте, чтобы случайно не отключить нужный модуль (исходя из опыта).
  • Наличие большого количества подключений в TIME_WAIT - это нормально. Это состояние, которое возникает после того, как сокет завершен и ожидает закрытия / уничтожения. Наличие большого количества подключений в ESTABLISHED может быть связано только с высокой загрузкой сервера, обслуживанием файлов, которое требует времени, или большим параметром KeepAlive (хотя я не уверен, какие подключения состояния сохраняются в последнем). Для моего приложения я обнаружил, что параметр KeepAlive действительно снижает производительность, поэтому я отключил его. Настройка KeepAlive по умолчанию (я думаю, 15 секунд) на самом деле довольно велика для большинства приложений, значение 1 или 2 секунды иногда работает лучше.
  • Следующим наиболее вероятным узким местом будет ЦП. Проверьте загрузку сервера с помощью «uptime» или «top». Обычно нагрузка меньше единицы - это хорошо, около единицы - нормально, а увеличение значений указывает на более потенциальную проблему. Не существует «плохого» значения нагрузки (по крайней мере, до тех пор, пока вы не получите очень высокие значения): обычно я вижу нагрузки менее 0,5 с периодическими скачками до 5 на моих серверах, когда они работают нормально. Проверка частоты простоя ЦП в «верхнем» является еще одним показателем загруженности ЦП.
  • Если ваш процессор является узким местом, рассмотрите возможность установки кеша кода операции PHP, такого как eAccelerator или APC. Это может немедленно снизить использование вашего процессора наполовину (или около того). Другие вещи, которые следует учитывать, - это добавление уровня кэширования для уменьшения количества запросов, которые веб-сервер должен обслуживать, и использование легкого сервера, такого как lighttpd / nginx, для обслуживания статического контента.
  • Вы можете более точно протестировать узкие места (оборудование или конфигурацию) с помощью программ тестирования производительности, таких как ab или siege. Выполните несколько базовых измерений с текущей конфигурацией, измените настройки и повторите попытку. Если вы не измеряете эффект от ваших изменений в конфигурации, вы можете потратить много времени на неправильное изменение.