Оптимизируйте Apache для высоких параллельных запросов

Я выполняю сервер Apache2 Ubuntu, который служит запросу API из мобильных приложений.

Недавно я сталкиваюсь с узким местом это, когда запрос, становящийся выше (больше параллельных пользователей), ответ запроса становится медленным. Ранее ~1 или 2 секунды сделают, но после того как параллельные пользователи увеличиваются (в определенный час пик), это может задержать до 10 секунд или больше, даже при том, что загрузка сервера, ЦП и Память остаются очень низкими.

Моя цель состоит в том, чтобы увеличить возможность Apache2 и Сервера Ubuntu для служения в качестве многого параллельные пользователи как возможного в самое низкое время отклика. Память и ЦП не являются главным фактором соображения, поскольку спецификация VPS может быть увеличена, если это поражает предел. Как я могу сделать это?

Что я сделал до сих пор:

  1. Настройте ulimit/etc/security/limits.conf и добавьте следующее:

    • мягкий nofile 40000
    • твердый nofile 40000
    • мягкий nproc 40000
  2. Добавьте следующую строку к/etc/pam.d/common-session

    сессия потребовала pam_limits.so

  3. Настройте 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>
  1. Добавьте следующую строку к/etc/sysctl.conf

    fs.file-макс. = 2097152

Время отклика, кажется, улучшено (хотя некоторые запросы, все еще отложенные), но не удовлетворительное, поскольку это еще намного медленнее, чем нечас пик.

2
задан 28 July 2015 в 10:50
2 ответа

Прекратить использование модуля предварительной вилки и начать использовать событие mpm в apache. Prefork - это старый метод, и в дальнейшем вы хотите установить событие mpm.

1
ответ дан 3 December 2019 в 12:46

Это может быть не ваш веб-сервер, а что-то еще в цепочке.

  1. DNS. В ситуации, когда явно не база данных, велика вероятность, что это DNS. Выполните nslookup и посмотрите, сколько времени занимает команда. Затем найдите несколько доменов.
  2. Это сеть, выполните traceroute и посмотрите, не занимает ли какой-либо из переходов в вашей сети больше времени, чем обычно.
  3. Netstat -i 5 , чтобы увидеть, есть ли какие-либо ошибки в сетевом интерфейсе.
  4. Убедитесь, что KeepAlive включен. Особенно если вы используете что-то вроде сайта с тяжелым ajax, вы улучшите производительность.

Я не верю, что переключение MPM вам поможет. Ваша ситуация не ограничена ресурсами. это что-то еще.

0
ответ дан 3 December 2019 в 12:46

Теги

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