Hello! On Fri, Mar 28, 2014 at 08:54:50PM +0400, Алексей Щуров wrote:
(В скобках замечу, что отвечать на digest - это плохая идея, т.к. в результате не строятся цепочки сообщений и нет возможности нормально посмотреть историю.) > С таймаутом 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 > > а потом nginx по событию готовности клиента вызывает sendfile с последней > позиции: > 2014/03/28 20:40:22 [debug] 9564#0: *99502 sendfile: @1302528 16473221 > > но у меня почему то стабильно останавливается передача после этой строки: > 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 По получению EAGAIN из sendfile'а nginx должен сказать ядру (если не сделал этого ранее), что ему следует уведомить nginx о возможности записи в указанный сокет. А ядро, соответственно - уведомить nginx, когда такая возможность появится. Если этого не происходит, то возможно одно из двух: 1) В nginx'е где-то ошибка, и соответствующий event не устанавливается. 2) В ядре где-то ошибка, и о соответствующем event'е nginx'у не сообщают. Чтобы понять, что именно происходит, нужно как минимум видеть полный конфиг и полный debug log, а равно вывод "nginx -V" и информацию о системе. Ну и я оставлю эту ссылку здесь: http://wiki.nginx.org/Debugging -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru