@nollin

Почему WEB сервер не справляется с нагрузкой?

Здравствуйте! Столкнулся со следующей проблемой:
Имеется выделенный сервер:
c2c4dd63ac864688bae36ed705abc229.png
На нем подняты:
Nginx версии 1.9.2.1 Lizard для Windows с расширенными возможностями (нареканий нет - пашет в 16 лопат и не потеет);
Апач: Server Version: Apache/2.4.18 (Win64), Server MPM: WinNT, Apache Lounge VC11 Server built: Dec 11 2015 13:02:26
PHP: PHP/5.6.17 (Win64);
Memcache Version 1.2.6;
MySQL Server 5.7 (Win64);
Проект высоконагруженный - игра-шутер для соц сетей с ежедневным онлайном ~10К юзверей (только клиентов, не считая игровых серверов, которые тоже дергают сервак на предмет обновления статуса и загрузки профилей игроков).
Имеем следующую проблему: каждые 30 секунд крашится апач с ошибкой в каком либо модуле:
88cc343203114b36a6f381df77542dc1.pngadd25bfdaef74018a77450e0e76df48e.png4428a713b35d40aeada583438590ed91.png3f1b16e2b3f04c94b3b6880a7375a1e2.png
Как определить нагрузку на сервер без понятия, но могу прикрепить скрин server-status от Apache:
381a6baaac754148b8f7d5a2b1102ae2.png
В диспетчере задач показывает общую нагрузку на проц в пределах 40%, на память в пределах 25%.
Вот конфиги элементов:
Конфиги
Опыта в администрировании и настройке стабильных и отказоустойчивых под нагрузками веб серверов практически нет. Пробовал перенастроить на Nginx + PHP-FPM, но ничего не вышло - после 1 минуты работы вылез крашлог php-cgi. Вернул обратно Apache - он хоть и падает, но сразу самоподнимается.
Если кто сталкивался с подобной проблемой - посоветуйте, пожалуйста, в какую сторону копать. LAMP не предлагать по причине отсутствия опыта настройки сервера даже под виндой, не то что под линукс системой. Да и сменить ось на выделенном сервере в другом городе по удаленке я считаю довольно проблемной затеей. Не ругайте строго, но по моему обывательскому мнению в данной конфигурации сервак должен держать нагрузку до 20-30К юзверей, но не держит.
  • Вопрос задан
  • 818 просмотров
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Apache вам не нужен, настраивайте Nginx+php-fpm. php-cgi это совсем другой sapi, он не должен иметь никакого отношения к Nginx и php-fpm.

А вообще поднимайте на отдельном сервере (на том же ноутбуке), подключайте профайлер (xdebug, blackfire, etc.) и тестируйте - смотрите где тормозит, попробуйте нагрузить через Apache Benchmark. А то ваши "сервак должен держать нагрузку до 20-30К юзверей" это безосновательные пальцем в небо.
Ответ написан
E5-2650 поддерживает гипертрединг, это значит что количество реальных ядер вдвое меньше, чем вы видите и загрузка в 40% может означать реальную загрузку в 80%, что слишком много ( уровень выше 60% обычно считают недопустимым).

Крэши апача вряд ли напрямую связаны с нагрузкой, если в вашей игре есть что-то, что реализовано как fcgi, ActiveX или другим образом грузит бинарный код в процесс Apache, то проблему скорей всего надо искать в вашем коде, где-то портится куча. Так же крэши могут быть вызваны сбойным модулем памяти, особенно если крэши в разных местах. Оттестируйте память, снижайте нагрузку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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