Re: nginx подтормаживает.

umask umask at yandex.ru
Wed Sep 5 18:52:51 MSD 2007


Есть все шансы, что nginx блокируется на чтении файлов. В случае чтения с диска воркер, которые это делает блокируется и клиентов не обслуживает, пока не прочитает файл (это если простыми словами).

А увеличение числа воркеров до 20 или 50 или... даёт какой-то результат?



05.09.07, 18:31, Arkadiy Kulev (eth at ethaniel.com):



> Hello umask,

> все файлы берутся с одного подключенного внешнего хранилища.

> причем если запустить еще один nginx - доступ к файлам будет

> мгновенный, без задержек.

> проблема в самом nginx - как он обрабатывает запросы.

> такое предположение, честно я не спец, что он "подвисает" на одних

> запросах и поэтому временно притормаживает другие.

> то есть скорость не всегда падает в ноль, бывает что она просто

> понижается до 60к к примеру.

> procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

>  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

>  0  9  10084   9744   6264 808616   22   13  2087   920   11    8 17  6 34 43  0

>  0 13  10084   9904   6272 807308    0    0  6144   314 9192 1028  7  6 11 76  0

>  0  3  10084   9416   6272 804308    0    0  2856  1883 7631  981 12  5 16 66  0

>  0  9  10084   9108   6268 796148    0    0  2944   122 11807 1190 13  9 19 60  0

>  0 11  10084  12312   6272 795780    0    0  6868   206 9609  821  6  6  7 81  0

>  0  8  10084   9412   6272 798724    0    0  4744  1184 6327  917  3  3  8 86  0

> с памятью проблем нет, там стоит 1 гигабайт, который не свопится (10

> мегабайт принципиальным свопом не считаю).

> Wednesday, September 5, 2007, 4:48:33 PM, you wrote:

> > Добрый день,

> > а откуда у вас беруться эти самые изображения и тот 4-х мегабайтный файл? С диска, из

> > ram-диска?

> > Что показывает `vmstat 1' в течение эксперимента +\- пол минуты?

> > Во время эксперимента есть какие-то сообщение в access и error логах?

> > 05.09.07, 16:35, Arkadiy Kulev (eth at ethaniel.com):

> >> День добрый,

> >> уже писал раньше, думал решил проблему, а оказывается нет.

> >> у меня nginx отдает 80-100 изображений в секунду на 10 worker-ах.

> >> стоит limit_rate 100k.

> >> начинаю с этого сервера скачивать большой файл на 4 мегабайта.

> >> первые несколько секунд нормально по 100к в секунду.

> >> потом вдруг замирает на пару секунд и сразу отдает к примеру 400к,

> >> дальше по 100к опять нормально.

> >> иногда эти замирания с падением скорости происходят секунд 5.

> >> сетка одна, на нее валить.

> >> sendfile_max_chunk и sndbuf не помогают вообще.

> >> очень обидно, что все эти параметры тюнинга настроек очень сухо или

> >> вообще не описаны в документации.

> >> конфига:

> >> user web web;

> >> timer_resolution  1000ms;

> >> #worker_priority 5;     

> >> worker_processes 10;

> >> #worker_rlimit_nofile 60000;

> >> worker_rlimit_nofile 10240;

> >> worker_rlimit_sigpending 32768;

> >> pid /var/run/nginxstorage.pid;

> >> error_log  /home/nginxstorage.err;

> >> events {

> >>         worker_connections   1024;

> >>         use epoll;

> >> }

> >>         proxy_buffering on;

> >>         proxy_temp_path  /ram;

> >>         proxy_buffers 30 8k;

> >>         proxy_connect_timeout 10;

> >>         proxy_read_timeout 60;

> >>         proxy_send_timeout 60;

> >>         #sendfile_max_chunk 128k;

> >>         limit_rate  100k;

> >>         access_log off;

> >>         include       mime.types;

> >>         default_type  application/octet-stream;

> >>         log_format main      '$remote_addr - $remote_user [$time_local] '

> >>         '"$request" $status $bytes_sent '

> >>         '"$http_referer" "$http_user_agent" '

> >>         '"$gzip_ratio"';

> >>         log_format download  '$remote_addr - $remote_user [$time_local] '

> >>         '"$request" $status $bytes_sent '

> >>         '"$http_referer" "$http_user_agent" '

> >>         '"$http_range" "$sent_http_content_range"';

> >>         client_header_timeout  3m;

> >>         client_body_timeout    3m;

> >>         send_timeout           3m;

> >>         client_header_buffer_size    4k;

> >>         large_client_header_buffers  16 8k;

> >>         client_max_body_size 220m;

> >>         #output_buffers   32 10k;

> >>         postpone_output  1460;

> >>         sendfile         on;

> >>         tcp_nopush       on;

> >>         tcp_nodelay      on;

> >>         keepalive_timeout  10;

> >>         server {

> >>                 listen 89.188.102.68:80 default sndbuf=512k backlog=3000;





More information about the nginx-ru mailing list