nginx тормозит выдачу контента. помогите выпрямить мне руки.
Igor Sysoev
is at rambler-co.ru
Wed Dec 5 21:54:06 MSK 2007
On Wed, Dec 05, 2007 at 09:38:01PM +0300, vvs at onecd.ru wrote:
> >> >> Был Apache - контент отдавался со скоростью более 300Мбит.
> >> >> Перешел на nginx+Apache. Скорость доходит до 120 МБит и после этого
> >> >> падает до 99. На этой скорости и работает... Бэкенд не тормозит.
> >> >> Ограничения на скачивания по кол-ву запросов с одного IP
> >> >> были такими же - не более 3 одновременных (отключал - не влияет).
> >> >> Сервер выдает файлы от 500Кб до 150Мб. Упора в дисковую
> >> >> нет. Память и CPU не загружены. Пиковая нагрузка ~ 1500 соединений.
> >> >> nginx принимает запросы, отправляет на бэкенд (Apache) получает
> >> >> X-Accel-Redirect на /internal/.
> >> >> Проблема, скорее всего, в моих кривых руках...
> >>
> >> >> limit_zone server_ip_limit $binary_remote_addr 10m;
> >>
> >> >> limit_conn server_ip_limit 3;
> >>
> >> > А когда использовлся только Апач, подобное ограничение было ?
> >>
> >> Приветствую, Игорь.
> >>
> >> Было. Я выше писал об этом. Отключение limit_zone и limit_conn никак
> >> не влияет на скорость - те же 99 мбит.
> >> Может я собрал неправильно?
>
> > Нет, сборка на такое не влияет. Апач сам отдаёт какие-нибудь файлы или
> > только всегда перенаправляет в /internal/ ?
>
> Мало, но отдает. Основная задача - перенаправление в /internal/.
> Может быть проблема в sendfile? Когда работает апач, ответ
> генерируется с помощью php и sendfile не используется...
> Насколько я понимаю, nginx получив ответ говорит sendfile и забывает
> до окончания запроса. Посему проблема не в nginx, а в системе.
>
> Исследовав все, нашел единственное странное:
> # vmstat -z
> ITEM SIZE LIMIT USED FREE REQUESTS FAILURES
> 16 Bucket: 152, 0, 42, 58, 80, 0
> 32 Bucket: 280, 0, 27, 57, 75, 0
> 64 Bucket: 536, 0, 14, 28, 45, 36
> 128 Bucket: 1048, 0, 3036, 2817, 7312, 5492731
>
> Что сие означает?
Насколько фатальны эти FAILURES, сказать не могу.
> При работе nginx
> # top
> last pid: 81899; load averages: 0.22, 3.05, 3.07
> up 0+14:15:03 19:11:18
> 95 processes: 1 running, 94 sleeping
> CPU states: 1.3% user, 0.0% nice, 2.1% system, 7.2% interrupt, 89.4% idle
> Mem: 182M Active, 2959M Inact, 491M Wired, 195M Cache, 209M Buf, 5604K Free
> Swap: 2048M Total, 216K Used, 2048M Free
>
> PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
> 720 mysql 10 4 0 105M 82712K sbwait 1 36:22 0.00% mysqld
> 726 root 1 77 0 19860K 2512K select 0 0:02 0.00% sshd
> 81461 www 1 -8 0 23440K 8672K biord 1 0:01 0.00% nginx
> 81462 www 1 -8 0 24056K 9292K biord 0 0:01 0.00% nginx
> 81463 www 1 -8 0 23260K 8488K biord 0 0:01 0.00% nginx
> 81460 www 1 -8 0 23920K 9156K biord 1 0:01 0.00% nginx
> 528 bind 1 76 0 7604K 3624K select 1 0:01 0.00% named
> 466 root 1 76 0 3688K 1064K select 0 0:00 0.00% syslogd
> 81344 root 1 76 0 60232K 7228K select 0 0:00 0.00% httpd
> 743 root 1 8 0 3724K 1112K nanslp 1 0:00 0.00% cron
nginx сидит в biord, а Вы говорите - нет дисковой активности.
Нужно увеличивать число worker'ов.
> Без nginx
> # top
> last pid: 93306; load averages: 2.17, 2.26, 2.29
> 1290 processes:5 running, 1281 sleeping, 4 lock
> CPU states: 5.7% user, 0.0% nice, 29.5% system, 15.2% interrupt, 49.5% idle
> Mem: 1567M Active, 1344M Inact, 627M Wired, 167M Cache, 214M Buf, 5604K Free
> Swap: 2048M Total, 212K Used, 2048M Free
>
> PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
> 720 mysql 11 4 0 113M 90260K sbwait 1 40:01 0.00% mysqld
> 83302 root 1 79 0 60412K 6656K select 0 0:10 0.00% httpd
> 726 root 1 76 0 19860K 2512K select 1 0:03 0.00% sshd
> 528 bind 1 76 0 7604K 3624K select 0 0:01 0.00% named
> 91750 www 1 4 0 60884K 7552K sbwait 0 0:01 0.00% httpd
> 466 root 1 76 0 3688K 1064K select 0 0:00 0.00% syslogd
> 88682 www 1 4 0 60876K 7692K sbwait 0 0:00 0.00% httpd
> 91436 www 1 4 0 61180K 7880K sbwait 1 0:00 0.00% httpd
> 92307 www 1 4 0 61192K 7896K sbwait 0 0:00 0.00% httpd
> 92566 www 1 4 0 61204K 7912K sbwait 1 0:00 0.00% httpd
> 83509 www 1 4 0 61024K 6924K sbwait 1 0:00 0.00% httpd
> 92547 www 1 76 0 60948K 7792K select 1 0:00 0.00% httpd
> 89759 www 1 4 0 61144K 7852K sbwait 0 0:00 0.00% httpd
>
> Исходя из всех данных, повторюсь, тормозит не nginx, а система.
> Если есть мысли - подскажите куда копать...
А что показывает
netstat -m
?
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list