nginx apache или nginx php fpm

Nginx + PHP-FPM против Apache2 Prefork + mod_php

PHP-FPM

Процессы были привязаны к TCP сокету, создано два пула по 4 процесса в каждом в статичном режиме.

nginx

Два воркера по 10240 коннектов каждый, php подключен как апстрим:
upstream php <
server 127.0.0.1:9000 max_fails=1 fail_timeout=60s;
server 127.0.0.1:9001 max_fails=1 fail_timeout=60s;
>

Apache

Отключен Keepalive, а MaxClients и ServerLimit установлены в 10240

Теперь о бенчмарке

Я постарался создать ситуацию сайта под DDOS атакой, когда 20k ботов долбят в главную страницу, а 5000 легальных пользователей ходят по сайту.
Импровизированную DDOS-атаку легко можно при помощи ab. А вот для пользователей пришлось сгенерировать карту сайта и натравить на нее siege.

Естественно, что для бенчмарка с апачем лог писался в apache.log

Перейдем к графикам

nginx apache или nginx php fpm. Смотреть фото nginx apache или nginx php fpm. Смотреть картинку nginx apache или nginx php fpm. Картинка про nginx apache или nginx php fpm. Фото nginx apache или nginx php fpm
Как видно — число процессов изменялось только во время работы Apache, ну так недаром его MPM назвали Prefork. Nginx и PHP-FPM статичны, в чем их большой плюс.

nginx apache или nginx php fpm. Смотреть фото nginx apache или nginx php fpm. Смотреть картинку nginx apache или nginx php fpm. Картинка про nginx apache или nginx php fpm. Фото nginx apache или nginx php fpm
К сожалению график памяти получился не очень красивым, но если посмотреть внимательно — памяти Apache потребляет больше.

nginx apache или nginx php fpm. Смотреть фото nginx apache или nginx php fpm. Смотреть картинку nginx apache или nginx php fpm. Картинка про nginx apache или nginx php fpm. Фото nginx apache или nginx php fpm
nginx apache или nginx php fpm. Смотреть фото nginx apache или nginx php fpm. Смотреть картинку nginx apache или nginx php fpm. Картинка про nginx apache или nginx php fpm. Фото nginx apache или nginx php fpm
Графики переключений между процессами и их форк очень интересно коррелируют между собой.

nginx apache или nginx php fpm. Смотреть фото nginx apache или nginx php fpm. Смотреть картинку nginx apache или nginx php fpm. Картинка про nginx apache или nginx php fpm. Фото nginx apache или nginx php fpm
Раскладка по утилизации CPU тоже явно не в пользу Apache.

Пробьем по логам

Nginx:

Расшифровка — за час работы связка Nginx+PHP-FPM успела пройти 38 итераций и завалить одну из них — 10629 ошибочных запросов. Это было связано с недоступностью апстрима — siege постарался, запустив большинство запросов на главную страницу.

Apache:

А вот с Apache все плохо — даже если вычеркнуть 2 «удачных» попадания siege, то остаются еще ошибки + за отведенное время было выполнено меньше запросов.

Таким образом, по результатам тестирования связка Nginx+PHP-FPM побеждает Apache со счетом 38:23

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *