скорость проксирования в связке nginx + proxy_pass + Tomcat

Sergej Kandyla sk.paix at gmail.com
Tue Apr 21 14:07:47 MSD 2009


BestPersons.ru пишет:
> Здравствуйте.
>
> Недавно столкнулся с проблемой, есть Apache Tomcat 6, отдает страницы со скоростью 5500 req/sec (100 параллельных клиентов)
>
> Если перед ним поставить nginx на той же машине, то скорость падает до
> 2000 req/sec.
>
> Получается nginx с proxy_pass более чем в 2 раза снижает скорость, мне
> это кажется странным.
>
> Так и должно быть?
>   

в вашем тесте nginx выступает в роли доп. элемента, который только 
замедляет работу (что и логично на таких скоростях.) Томкат весьма 
хорошо все кеширует и отдает ответы из памяти быстро.
Так что есть большая вероятность, что в описанных вами условиямх так 
может быть. Другой вопрос, получите ли вы выгоду в реальной работе от 
применения nginx.

Чтобы быть обьективным, вы бы попробовали провести эксперимент другой 
тестилкой, а также поставить на фронтенд apache и посмотреть результат 
на нем.
Также следует иметь в виду, что в реальных сетях вы сможете обслуживать 
maxProcessors\maxThreads  клиентов томката,  а nginx в этоже время 
сможет обслуживать много больше медленных клиентов.

Еще nginx умеет прекрасно балансировать нагрузку и очень помогает 
сдерживать небольшие частые ddos атаки. В этом большой плюс.
И еще одно:  "Искусственные тесты дают искусственные результаты." В 
реальности все может быть иначе.



> Крутил различные параметры конфига nginx - не помогает. В error.log
> ошибок при бенчмарке не появляется. Бенчмарк запускается по 100 Mb сети с
> другой машины, в сеть не упирается.
>
> Бенчмарк вызывается следующей коммандой: httperf --server 192.168.0.10 --port 80 --uri / --num-conn 100 --num-call 100 --rate 100 --timeout 5
>
> Машинка: AMD Athlon 64 X2 Dual Core Processor 5200+, 2Gb RAM
>
> nginx.conf:
> user  nobody;
> worker_processes  3;
> worker_rlimit_core 2000M;
>
> error_log  logs/error.log;
> pid        logs/nginx.pid;
>
>
> events {
>     worker_connections  50000;
>     use epoll;
> }
>
>
> http {
>     server_names_hash_max_size 10000;
>     server_names_hash_bucket_size 256;
>     client_max_body_size 5m;
>
>     log_format IP '$remote_addr';
>     server_tokens off;
>     reset_timedout_connection on;
>
>     include       mime.types;
>     default_type  application/octet-stream;
>
>     sendfile        on;
>     tcp_nopush     on;
>     tcp_nodelay     on;
>
>     keepalive_timeout  70;
>
>     access_log off;  
>     recursive_error_pages on;
>
>     upstream bpbackends {
>          server 127.0.0.1:8080;
>     }
>   
>     server {
>         listen 80;      
>         server_name  localhost;       
>
>         location / {          
>             proxy_pass   http://bpbackends;
>             proxy_set_header    Host    $host;                      
>             proxy_set_header X-Forwarded-For $remote_addr;        
>         }
>     }
> }
>
> C уважением,
>   Александр.
>
>
>
>   






More information about the nginx-ru mailing list