Я использую сервер Apache2 Ubuntu, который обслуживает запросы API от мобильных приложений.
Недавно я столкнулся с проблемой: когда запрос становится выше (больше одновременных пользователей), ответ на запрос становится медленным. Ранее ~ 1 или 2 секунд, но как только количество одновременных пользователей увеличится (в определенный час пик), это может задержать до 10 секунд или больше, даже если сервер загружен, ЦПУ и объем памяти остается очень низким.
Моя цель - повысить способность Apache2 и Ubuntu Server обслуживать как можно больше одновременных пользователей при минимальном времени отклика. В память и процессор не являются основными факторами рассмотрения поскольку спецификация 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-max = 2097152
Кажется, что время отклика улучшилось (хотя некоторые запросы все еще задерживаются), но неудовлетворительно, так как оно по-прежнему намного медленнее, чем в непиковые часы.
Прекратите использовать модуль prefork и начните использовать событие mpm в apache. Prefork - это старый метод, и в дальнейшем вы хотите установить событие mpm.
Это может быть не ваш веб-сервер, а что-то еще в цепочке.
Netstat -i 5
чтобы увидеть, есть ли ошибки в сетевом интерфейсе. KeepAlive
горит. Особенно, если у вас что-то вроде сайта с тяжелым ajax, вы улучшите производительность.Я не верю, что переключение MPM вам поможет. Ваша ситуация не ограничена ресурсами. это что-то еще.