On Friday 28 March 2014 20:54:50 Алексей Щуров wrote: > С таймаутом 60 секунд всё тоже самое, только клиент дольше ожидает данные. > У тестового клиента очень высокая скорость и со стороны клиента это > выглядит как быстро передавшиеся первые 1-4 Мбайта, потом полное молчание > со стороны сервера и по таймауту от nginx приходит RST пакет. > > Как я понял когда буфер заканчивается sendfile возвращает nginx что он не > полностью отдал файл: > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile: @0 17775749 > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile: 1302528, @0 > 1302528:17775749
Мы не знаем причину по которой sendfile() отдал файл не полностью, поэтому зовем sendfile() ещё раз. > > а потом nginx по событию готовности клиента вызывает sendfile с последней > позиции: > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile: @1302528 16473221 Это не по событию, это просто следующий вызов sendfile() на очередной итерации цикла. В этом нет ничего необычного. > > но у меня почему то стабильно останавливается передача после этой строки: > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile() is not ready (11: > Resource temporarily unavailable) > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile: -1, @1302528 0:16473221 > > Это был уже другой пример неудачной передачи и уже на nginx 1.5.12 с таким > же spec файлом. Значит о событии готовности nginx-у больше не сообщают. Либо клиент просто больше не читает из-за ошибки в самом клиенте или из-за проблем с сетью, либо ядро не сообщает (2.6.18 - тухлый антиквариат, там может быть что угодно), или же где-то ошибка в nginx. Стоит посмотреть тем же tcpdump-ом что происходит при этом на соединении. -- Валентин Бартенев _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru