Назад | Перейти на главную страницу

Тест: nginx1.8 + php-fpm против apache2.4 + mod_php

Я тестирую эти две настройки (установленные в одной системе)

nginx 1.8.0 + php-fpm (5.6.14-0+deb8u1)
apache 2.4.10 + mod_php (5.6.14-0+deb8u1)

Пробежали через вывод phpinfo() и выглядят они одинаково (вручную ничего не меняли)

Оборудование:

Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz + 16GB RAM

Тест 1 - один-единственный HTTP-запрос (PHP) один раз (без параллелизма)

nginx ~= 360ms
apache ~= 320ms

Тест 2 - загрузка сайта со всем статическим контентом css / js и т. Д.

nginx ~= 7.7sec
apache ~= 8.9sec

Что я упустил в конфигурации?

AllowOverride All установлен даже на apache, а apache по-прежнему превосходит nginx по запросу PHP !?

nginx

user  www-data;
worker_processes  8;
pid  /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    sendfile  on;
    tcp_nopush  on;
    tcp_nodelay  on;
    keepalive_timeout  65;

    server_tokens  off;
    autoindex  off;

    include  /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log warn;

    index  index.php index.html index.htm;

    gzip  on;

    server {
        listen  80;
        server_name  domain.com;

        root  /var/www/public/secure;

        access_log  /var/log/nginx/access.log;

        # Add trailing slash
        rewrite  ^([^.\?]*[^/])$ $1/ permanent;

        location / {
            try_files  $uri $uri/ @missing;
        }

        location @missing {
            rewrite  ^ /index.php;
        }

        location ~ .php$ {
            include  /var/ini/nginx/fastcgi.conf;
            fastcgi_pass  php;
            fastcgi_param  SCRIPT_FILENAME /var/www/public/secure/index.php;
        }
    }
}

Apache

Listen 8080

<Directory /var/www>
    Options -Indexes +FollowSymLinks
    AllowOverride All
</Directory>

NameVirtualHost *:8080

<VirtualHost *:8080>
    ServerName domain.com
    DocumentRoot /var/www/public/secure

    #LogLevel debug
    ErrorLog /var/www_log/error.log
    CustomLog /var/www_log/access.log common
</VirtualHost>

Превзойти как? Если он настроен так же, как и любой другой тестовый тест веб-запросов, который я видел, тогда ниже число, тем выше производительность. Во втором случае ваша установка nginx была на 1 секунду быстрее, чем apache. Второй случай действительно единственный, над которым стоит возиться.

Сколько раз вы запускаете его для каждого теста?

Кроме того, если вы получаете 7,7 секунды на один запрос на странице phpinfo, это вызывает беспокойство. Каковы остальные технические характеристики оборудования? Какая ОС? Какие еще сервисы работают?