Зависание скачивания. Сервер не закрывает соединение по таймауту.
Igor Sysoev
is at rambler-co.ru
Thu Sep 27 09:55:27 MSD 2007
On Thu, Sep 27, 2007 at 11:25:47AM +0700, Pavel V. wrote:
> На сервере, раздающем mp3, периодически возникает "зависание" tcp-соединения, но Nginx со своей
> стороны по таймауту соединение не закрывает. Это происходит как при
> прослушивании mp3 плеером, так и при скачивании файла с сайта.
> Проблему победить никак не можем, подскажите какие-нибудь идеи по её
> локализации.
>
> Особенно интересен тот факт, что соединение не закрывается по таймауту со стороны сервера.
>
> Файлы раздаются Nginx-0.5.22.
> Интерфейс сервера 100Mbit, Intel Corporation 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller (rev 01)
> ОСь - fc5, "uname -a": Linux my.server.net 2.6.20-1.2316.fc5 #1 Fri Apr 27 19:49:38 EDT 2007 i686 i686 i386 GNU/Linux
> load average: 2.67, 2.27, 1.97
> На сервере используется шейпер траффика (с целью приоритезации 80 порта).
> Суммарный поток раздачи с сервера 80-98 Mbit.
>
>
> Вырезка опций конфига Nginx, который работает на 8080 порту:
>
> user apache;
> worker_processes 1;
> worker_priority -10;
>
> events {
> worker_connections 1024;
> }
>
> sendfile off;
> output_buffers 8 32k;
> tcp_nodelay on;
>
> http {
> server {
> listen my.server.net:8080 default;
> location / {
> root /music;
> }
> }
> }
>
>
> На сервере сделан tcpdump "зависшего" соединения
> (tcpdump -i eth0 host myhost.client.net and port 8080)
>
> 10:45:22.008231 IP my.server.net.webcache > myhost.client.net.4746: . 3942720:3944089(1369) ack 1 win 216
> 10:45:22.090822 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3949565 win 21219
> 10:45:22.120086 IP my.server.net.webcache > myhost.client.net.4746: . 3949565:3950934(1369) ack 1 win 216
> 10:45:22.120200 IP my.server.net.webcache > myhost.client.net.4746: . 3950934:3952303(1369) ack 1 win 216
> 10:45:22.251664 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3952303 win 19850
> 10:45:22.278066 IP my.server.net.webcache > myhost.client.net.4746: . 3952303:3953672(1369) ack 1 win 216
> 10:45:22.278186 IP my.server.net.webcache > myhost.client.net.4746: . 3953672:3955041(1369) ack 1 win 216
> 10:45:22.278313 IP my.server.net.webcache > myhost.client.net.4746: P 3955041:3956410(1369) ack 1 win 216
> 10:45:22.369887 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3955041 win 18481
> 10:45:22.419235 IP my.server.net.webcache > myhost.client.net.4746: . 3956410:3957779(1369) ack 1 win 216
> 10:45:22.419376 IP my.server.net.webcache > myhost.client.net.4746: . 3957779:3959148(1369) ack 1 win 216
> 10:45:22.465764 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3957779 win 17112
> 10:45:22.508777 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:22.508903 IP my.server.net.webcache > myhost.client.net.4746: . 3960517:3961886(1369) ack 1 win 216
> 10:45:22.543574 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3959148 win 16428 <nop,nop,sack 1 {3960517:3961886}>
> 10:45:22.621058 IP my.server.net.webcache > myhost.client.net.4746: . 3961886:3963255(1369) ack 1 win 216
> 10:45:22.621181 IP my.server.net.webcache > myhost.client.net.4746: P 3963255:3964624(1369) ack 1 win 216
> 10:45:22.651559 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3959148 win 16428 <nop,nop,sack 1 {3960517:3963255}>
> 10:45:22.652822 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3959148 win 16428 <nop,nop,sack 1 {3960517:3964624}>
> 10:45:22.784246 IP my.server.net.webcache > myhost.client.net.4746: . 3964624:3965993(1369) ack 1 win 216
> 10:45:22.792310 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:22.823759 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3959148 win 16428 <nop,nop,sack 1 {3960517:3965993}>
> 10:45:22.834240 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 13005
> 10:45:22.888502 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:23.235514 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:23.268525 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 13005
> 10:45:23.683219 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
>
> 10:45:24.076428 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:24.116354 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:45:25.672072 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:25.715944 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:45:28.905941 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:28.942839 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:45:35.341822 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:35.373806 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:45:48.231455 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:45:48.266088 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:46:13.990243 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:46:14.010837 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
> 10:47:05.560333 IP my.server.net.webcache > myhost.client.net.4746: . 3959148:3960517(1369) ack 1 win 216
> 10:47:05.580006 IP myhost.client.net.4746 > my.server.net.webcache: . ack 3965993 win 32856
>
> 10:51:34 - tcpdumping остановлен. Больше ни одного пакета не прошло.
>
> Написал письмо. Запустил tcpdump снова ;-) Нажал "остановить" в winamp.
>
> 11:14:06.683103 IP 212.192.123.214.4746 > mp1.tomsk.ru.webcache: F 3881566771:3881566771(0) ack 1518301459 win 32856
> 11:14:06.733436 IP mp1.tomsk.ru.webcache > 212.192.123.214.4746: R 1518301459:1518301459(0) win 0
Если ошибка достаточно часто воспроизводиться, то хотелось бы
получить отладчный лог и tcpdump.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list