nginx как frontend к apache

Olexander Shtepa isk at idegroup.com
Mon Aug 3 10:09:43 MSD 2009


> Nginx очень быстр при работе со статикой.

Устал от этого ля-ля (да, эмоции).
Вот слепил на быструю руку небольшое сравнение.
Имеем:
 Apache - 11503.40 [#/sec]
 Nginx - 13601.67 [#/sec]

В данном случае Nginx отдавал файл всего на 18% быстрее чем Apache. Не вижу оснований для "очень быстр", только "немного быстрее".

Apache
Конфиг:
 ServerTokens Prod
 ServerRoot "/etc/httpd"
 PidFile run/httpd.pid
 Timeout 120
 KeepAlive On
 MaxKeepAliveRequests 100000
 KeepAliveTimeout 15
 StartServers       1
 MinSpareServers    1
 MaxSpareServers    3
 ServerLimit      256
 MaxClients       256
 MaxRequestsPerChild  0
 Listen 127.0.0.1:80
 User apache
 Group apache
 ServerAdmin root at localhost
 DocumentRoot "/var/www/html"
 <Directory />
    Options FollowSymLinks
    AllowOverride None
 </Directory>
 DefaultType text/plain
 HostnameLookups Off
 EnableMMAP on
 EnableSendfile on
 FileETag None
 ErrorLog logs/error_log
 LogLevel warn
 ServerSignature Off
 AddDefaultCharset UTF-8

$ ab -Sq -c 1 -n 20000 -k http://127.0.0.1/test
Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            80       

Document Path:          /test
Document Length:        628 bytes

Concurrency Level:      1
Time taken for tests:   1.739 seconds
Complete requests:      20000        
Failed requests:        0            
Write errors:           0            
Keep-Alive requests:    20000        
Total transferred:      17780001 bytes
HTML transferred:       12560000 bytes
Requests per second:    11503.40 [#/sec] (mean)
Time per request:       0.087 [ms] (mean)      
Time per request:       0.087 [ms] (mean, across all concurrent requests)
Transfer rate:          9986.84 [Kbytes/sec] received                    

Nginx
Конфиг:
 user              nginx;
 worker_processes  1;
 error_log         /var/log/nginx/error.log;
 pid               /var/run/nginx.pid;
 events {
     worker_connections  1024;
 }
 http {
     default_type  application/octet-stream;
     access_log off;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       127.0.0.1:80;
         server_name  _;
         root   /var/www/html;
     }
 }

$ ab -Sq -c 1 -n 20000 -k http://127.0.0.1/test  
Server Software:        nginx/0.6.36
Server Hostname:        127.0.0.1   
Server Port:            80          

Document Path:          /test
Document Length:        628 bytes

Concurrency Level:      1
Time taken for tests:   1.470 seconds
Complete requests:      20000        
Failed requests:        0            
Write errors:           0            
Keep-Alive requests:    20000        
Total transferred:      17180000 bytes
HTML transferred:       12560000 bytes
Requests per second:    13601.67 [#/sec] (mean)
Time per request:       0.074 [ms] (mean)      
Time per request:       0.074 [ms] (mean, across all concurrent requests)
Transfer rate:          11409.99 [Kbytes/sec] received                   

> apache при каждом запросе создает дочерний процесс .

Какой бред.
Хотя, да, Apache такой гибкий что его можно и это заставить делать, но никто в своём уме не будет этого делать.
Случай с CGI не считается, так как он такой и есть, кстати именно поэтому в Nginx никогда не будет CGI.

> nginx же очень компактно расходует память.

Он её расходует сколько, скольно нужно. Apache тоже бесполезно память не расходует.

ЗЫ: почему Nginx таки используют напишу ответом на первое письмо


More information about the nginx-ru mailing list