Как определить, чем ограничивается производительность веб-сервера (LAMP)?

Есть сервер на Amazon EC2 типа m1.xlarge (4 ядра, 15 ГБ) с ubunstu server 12.04.

Внутри — php, mysql, apache и php-приложение (SugarCRM).

Для тестирования нагрузки используется Yandex.Tank.

Сервер справляется с 10 запросами в секунду при среднем времени запроса в 300 мс. При увеличении количества запросов в секунду происходит следующее.

Среднее время запроса начинает линейно расти до тех пор, пока 100% запросов не начинают отваливаться по таймауту. Одновременно с этим в mysql начинают копиться процессы со статусом sleep.

Лимиты на количество процессов апача и количества соединений mysql не достигаются, загрузка процессора и использование памяти — в пределах 20%.

При замене связки libapache2-mod-php5 + mpm_prefork на php-fpm + mpm_worker симптомы сохраняются.

В чём может быть причина появления незакрытых процессов? Как определить, из-за чего серверу нехорошо?
  • Вопрос задан
  • 3410 просмотров
Решения вопроса 1
Посмотрите какие цифры показывает трассировка xdebug.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Ubuntu 12.04 + nginx + php-fpm + percona mysql = ноу проблем. А вообще зачем вам для таких задач дурной Amazon EC2? Чем тотже DO не катит?
Ответ написан
Комментировать
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Скорее всего по какой-то причине не завершаются процессы PHP (висят до таймоута).
Ответ написан
Комментировать
@sameoldmadness Автор вопроса
Попробовать апач выкинуть? Рассматриваю такой вариант, но не хотелось бы пробовать наудачу.

На данный момент мне непонятно, где затор.

DO — катит, забыл про него.
Ответ написан
@bondbig
Смотреть iostat, делать strace для процессов, смотреть, на чем затыкается.
Организовать мониторинг (хотя бы munin и включить побольше плагинов для мониторинга как самой системы - диск, память, процессор, прерывания,etc; так и сервисов apache/mysql/nginx/fpm/etc) и смотреть на аномалии/корреляции на графиках по всем модулям.

Прогнать синтетические тесты (типа unixbench/phoronix) и смотреть, где затыкается.
Ответ написан
Комментировать
@sameoldmadness Автор вопроса
Скорее всего по какой-то причине не завершаются процессы PHP (висят до таймоута).


Ну и пускай висят. Пока память есть, не должно же влиять на производительность?
Ответ написан
Ваш ответ на вопрос

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

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