Низкая производительность Apache httpd

Низкая производительность Apache httpd

У меня есть веб-сайт, работающий с использованием httpd на Centos 7.

У меня 8 процессоров и 32 ГБ оперативной памяти.

Когда на сайте одновременно находится более 500-600 пользователей, отклик сервера увеличивается. Даже при этом загрузка процессора составляет около 20-25%, а оперативная память также не используется.

Что можно настроить, чтобы повысить производительность или что я упускаю? Наши страницы на 100% кэшируются, и мы не запускаем запросы к базе данных или что-то в этом роде.

httpd.conf

HostnameLookups Off
KeepAlive On
MaxKeepAliveRequests 1500
KeepAliveTimeout 5
<IfModule prefork.c>
   StartServers        30
   MinSpareServers     30
   MaxSpareServers     50
   ServerLimit      512
   MaxClients       512
   MaxRequestsPerChild 10000
</IfModule>

вершина:

%Cpu(s):  1.9 us,  2.6 sy,  0.0 ni, 95.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32779548 total,  3268520 free, 12679060 used, 16831968 buff/cache

решение1

Apache чертовски эффективен. Хотя технически это должно подходить к моему ответу, вас почти наверняка тормозит что-то другое, а не сам сервер... возможно, CGI, который вы запускаете, или что-то совсем другое.

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

Единственные маловероятные примеры, которые я могу вспомнить, когда Apache действительно забуксует:

  1. Если вы каким-то образом делаете это рекурсивным — знаете, делаете перенаправления с одного URL на тот же URL, а затем снова, снова и снова...

  2. Если вы используете в своей конфигурации доменные имена, которые не разрешаются. Возможно, они неправильно написаны или просрочены, или ваш DNS испорчен. Незначительные промахи допустимы, но некоторые конфигурации могут пытаться выполнить много неудачных DNS-поисков при каждом попадании.

Похоже, что ваш(и) процессор(ы) все еще довольно простаивает, так что, вероятно, он ожидает какой-то DNS-запрос или системную проблему или что-то еще.

«kdump» действительно может разобраться в тонкостях и увидеть, что происходит, но начните с просмотра остальной части «top» (или ps -axww), чтобы узнать, какие программы на самом деле используют системные ресурсы, а не просто предполагайте, что это Apache, поскольку проблема может быть в самом Apache, а может и не быть.

Связанный контент