Я выполняю сервер Apache2 Ubuntu, который служит запросу API из мобильных приложений.
Недавно я сталкиваюсь с узким местом это, когда запрос, становящийся выше (больше параллельных пользователей), ответ запроса становится медленным. Ранее ~1 или 2 секунды сделают, но после того как параллельные пользователи увеличиваются (в определенный час пик), это может задержать до 10 секунд или больше, даже при том, что загрузка сервера, ЦП и Память остаются очень низкими.
Моя цель состоит в том, чтобы увеличить возможность Apache2 и Сервера Ubuntu для служения в качестве многого параллельные пользователи как возможного в самое низкое время отклика. Память и ЦП не являются главным фактором соображения, поскольку спецификация VPS может быть увеличена, если это поражает предел. Как я могу сделать это?
Что я сделал до сих пор:
Настройте ulimit/etc/security/limits.conf и добавьте следующее:
Добавьте следующую строку к/etc/pam.d/common-session
сессия потребовала pam_limits.so
Настройте Apache2/etc/apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module> StartServers 20 MinSpareServers 25 MaxSpareServers 100 MaxRequestWorkers 150 MaxConnectionsPerChild 0 MaxClients 8192 MaxRequestsPerChild 0 ServerLimit 8192 </IfModule>
Добавьте следующую строку к/etc/sysctl.conf
fs.file-макс. = 2097152
Время отклика, кажется, улучшено (хотя некоторые запросы, все еще отложенные), но не удовлетворительное, поскольку это еще намного медленнее, чем нечас пик.
Прекратить использование модуля предварительной вилки и начать использовать событие mpm в apache. Prefork - это старый метод, и в дальнейшем вы хотите установить событие mpm.
Это может быть не ваш веб-сервер, а что-то еще в цепочке.
Netstat -i 5
, чтобы увидеть, есть ли какие-либо ошибки в сетевом интерфейсе. KeepAlive
включен. Особенно если вы используете что-то вроде сайта с тяжелым ajax, вы улучшите производительность. Я не верю, что переключение MPM вам поможет. Ваша ситуация не ограничена ресурсами. это что-то еще.