ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: Умирают воркеры



> > > > На сервере с nginx наблюдается следующие проблемы:
> > > > - скорость отдачи файлов предельно низкая (1-4 Кб/с)
> > > > - умирают воркеры, в статистике висят тысячи "активных" соединений
> > > 
> > > Что показывает
> > > 
> > > netstat -an | grep ESTAB | wc -l
> > 
> > Сейчас показывает уже 1000.. число постепенно увеличивается. Но столько 
> > реальных клиентов точно нет!
> 
> Факты таковы что соответствующее количество соединений открыто.

Тогда вопрос: почему они открыты? не должно быть столько клиентов!!! нормальное 
количество клиентов 300-400.. а здесь их количество просто постоянно растет.

> 
> > > Это значит, что nginx упёрт в дисковую подсистему.  И при 
> > > включённом sendfile, и при выключенном.  Смотрите из чего именно 
> > > она состоит, как её можно разгрузить и/или ускорить.  Начать 
> > > рекомендую с внимательного изучения вывода gstat.
> > > 
> > > Ну и количество шпинделей посчитать, и привести количество 
> > > воркеров в соответствие.  Ибо 30 - это много, за исключением очень 
> > > специфичных задач.  Таким количеством воркеров вы гарантировано 
> > > загоните диски в случайное чтение, и не стоит удивляться 
> > > результату.
> > 
> > Жесткий диск под файлы всего один. gstat показывает следующее:
> > 
> > dT: 1.001s  w: 1.000s
> >  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w   %busy Name
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1
> >     9     75     75   6617   95.0      0      0    0.0   98.6| ad10
> 
> SATA диски обычно выдают больше чем 75 операций в секунду на 
> случайном чтении, хотя и не намного.  Ну и цифра 95 ms/r тоже не 
> блещет, должно быть меньше.  Можно попробовать внимательно 
> посмотреть на диск - почитать smart, поменять на другой и т.п.

диск WD SATA2 1Tb 32mb. когда файлы раздавались апачем, общая скорость отдачи 
была 15-20 Мб/с. А сейчас только 6-7.

> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1a
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1b
> 
> Странно, что при таких буферах и таком количестве соединений 
> система не ушла в swap.  Что показывает top?

top показывает следующее:
last pid: 61934;  load averages:  1.15,  0.50,  0.32                       up 
28+00:48:23  13:05:20
136 processes: 1 running, 135 sleeping
CPU states:  8.1% user,  0.0% nice,  7.9% system,  0.9% interrupt, 83.1% idle
Mem: 220M Active, 3060M Inact, 433M Wired, 184M Cache, 214M Buf, 5652K Free
Swap: 512M Total, 57M Used, 455M Free, 11% Inuse

  PID USERNAME       THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
 2236 root             1  96    0 12100K  4408K select 1 111:13  0.88% openvpn
61632 www              1  96    0   133M  9416K select 0   0:00  0.10% httpd
61842 www              1  96    0   133M  9400K select 0   0:00  0.09% httpd
61706 www              1  20    0   133M  9404K lockf  0   0:00  0.05% httpd
84294 root             1  96    0   132M  2172K select 0  12:17  0.00% httpd
  898 mysql            1   8    0  6212K     0K wait   0   7:32  0.00% <sh>
19839 mysql            9  20    0 63692K  7148K sigwai 1   4:25  0.00% mysqld
  743 root             1  96    0  4684K   440K select 0   2:44  0.00% syslogd
  866 root             1  96    0  8960K   576K select 1   1:08  0.00% ntpd
46304 root            32  96    0 16608K  4540K select 0   0:50  0.00% 3proxy
  939 root             1  96    0 10576K   668K select 0   0:33  0.00% sendmail
36938 www              1  -8    0 25064K 19968K biord  0   0:29  0.00% nginx
36935 www              1 -16    0 26088K 20232K pgrbwt 1   0:29  0.00% nginx
36937 www              1  -8    0 28136K 22336K biord  1   0:29  0.00% nginx
36936 www              1 -16    0 26088K 20976K pgrbwt 0   0:28  0.00% nginx
  949 root             1   8    0  5736K   380K nanslp 0   0:07  0.00% cron
56989 www              1  -8    0 16836K  6692K piperd 1   0:07  0.00% perl5.8.8
  933 root             1  96    0 20960K   384K select 0   0:04  0.00% sshd
56956 www              1  96    0   133M  9460K select 1   0:02  0.00% httpd
96246 www              1  76    0     0K    16K user m 1   0:02  0.00% httpd
21423 root             1  96    0 11504K     0K select 1   0:02  0.00% <mc>
58683 www              1  -8    0 16748K  6652K piperd 1   0:01  0.00% perl5.8.8



> 
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1c
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1d
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1e
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad6s1f
> >     9     75     75   6617   95.0      0      0    0.0   98.6| ad10s1
> >     0      0      0      0    0.0      0      0    0.0    0.0| ad10s1c
> >     9     75     75   6617   95.0      0      0    0.0   98.6| ad10s1d
> > 
> > ad10 - диск для хранения файлов, нагрузка пляшет от 98 до 101 процента.
> > 
> > 
> > P.S. Рядом стоит практически такой же сервер, тоже один диск для хранения 
> > файлов, но там система 32-битная.
> > На нем все работает вроде бы нормально, файлы отдаются значительно быстрее, 
> > хотя нагрузка должна быть больше. Настройки у nginx-ов специально сделал 
> > одинаковые, но разница в работе - огромная.
> 
> В первую очредь влияет суммарный объём раздаваемых файлов (в 
> частности горячей части), и отношение этого объёма к не занятой 
> приложениями оперативной памяти (т.е. к объёму кеша файловой 
> системы).
> 
> Если на этих машинах нагрузка разная - то говорить о чём-либо без 
> учёта вышеупомянутых факторов - бессмысленно.
> 
> Ну и диски, опять же, бывают *сильно* разными.

В данном случае диски абсолютно одинаковые!
Что касается нагрузки, она тоже примерно одинаковая. При загрузке на сервер 
файлы с вероятностью 0.5 отправляются на одну или вторую машину. На первой 
машине стоит FreeBSD 7.0 i386, а на второй FreeBSD 7.0 amd64. На первой 
почему-то все работает, а на второй проблемы:(
когда файлы отдавались апачем, машины работали одинаково. Но отдавать более 300 
файлов одновременно с помощью php оказалось очень накладно, поэтому пытаюсь 
настроить nginx.


> 
> p.s. Уменьшайте output_buffers.  Вы потребляете памяти существенно 
> больше чем у вас есть.
> 

на данный момент в конфиге установлено: output_buffers   1 1M; как мне 
посоветовали в рассылке.

P.S. я склонен полагать, что проблема-таки не в дисках, а в настройке nginx-а. 
Потому что при копировании файлов по протоколу FTP - скорость 250-300 Кб/с. 
Nginx начинает отдавать примерно на такой же скорости, потом количество 
непонятных подключений увеличивается, скорость падает, и уже около 500-600 
подключений составляет 10-20 Кб/с.



 




Copyright © Lexa Software, 1996-2009.