Постоянные обрывы коннектов
Maxim Dounin
mdounin at mdounin.ru
Wed Jul 15 06:47:32 MSD 2009
Hello!
On Tue, Jul 14, 2009 at 10:42:23PM +0200, Anton Kuznetsov wrote:
> Тоже спасибо :)
> Поставил 8.0.5 - проблему опять видно.
>
> В принципе конфиг работает - 2 запроса в минуту и остальные ждут. Но.. масса
> строчек в логе с размером ответа 60к-65к.
Те "строчки в логе с размером ответа 60к-65к", которые вы до сих
пор приводили для nginx'а с наложенным патчем, не являются
проблемой в nginx'е, а лишь отражают поведение ваших
пользователей.
Судя по описываемым симптомам - очень может быть что они просто не
дожидаются ответа и закрывают соединение.
В качестве проверки можно попробовать убрать реальный сервер за
proxy_pass (можно в том же nginx'е и видимо с
proxy_max_temp_file_size 0 чтобы диск лишнего не грузить) - будет
работать детектирование закрытия соединения клиентом, и подобные
запросы до диска не дойдут. В логах должно появиться что-то вроде
"kevent() reported that client closed prematurely connection" на
уровне info.
Maxim Dounin
> Отключаю все limit_req - пропадают эти ненавистные строчки 60к-65к, но
> начинается основная проблема - просто долбежка запросами от качалок, ответы
> там разных размеров, но в основном до 1м. Что меня не очень устраивает, ни
> по распухающим логам, ни по эффективности работы сервера. Не хочу чтобы
> нжинкс только и делал что открывал коннекты и закрывал. Десятками в секунду.
> И еще чтобы он не читал по 500к-1000к с диска в буфер из которого потом
> отдает только 150к. Хочу чтобы качали нормальные люди, которые могут
> настроить качалку в один поток. Остальные пусть смотрят на свои 2000
> ESTABLISHED коннектов в которые ничего не отдается.
>
> Может я неправильным путем иду?
> Исходная задача - отдавать в один поток, остальные подвешивать, стреляя 503
> крайне медленно и долго.
> Кол-во запросов в минуту тоже ограничить, превышение аналогично подвешивать.
>
> Антон.
>
>
> 2009/7/14 Maxim Dounin <mdounin at mdounin.ru>
>
> > Hello!
> >
> > On Tue, Jul 14, 2009 at 09:24:48PM +0200, Anton Kuznetsov wrote:
> >
> > > Ну раз уж взялся ковырять проблему хотел и обновиться.. Ну делать нечего,
> > > пропатчил 0.7.61
> > >
> > > Собственно возвращаясь к сути проблемы - на разных серверах все сильно
> > по
> > > разному.
> > > Вот логи с сервера где проблему побороть не удалось.
> > > FREEBSD 7.0-RELEASE
> > > nginx version: nginx/0.7.61
> > > Патч наложен.
> >
> > [...]
> >
> > > 2009/07/14 23:02:57 [debug] 89383#0: *969 limit_req: -2 1.000
> > > 2009/07/14 23:02:57 [warn] 89383#0: *969 delaying request, excess: 1.000,
> > by
> > > zone "avi", client: 95.24.28.67, server: inka.arjlover.net, request:
> > "GET
> > > /multiki/ostrov.osh
> > > ibok.avi HTTP/1.0", host: "inka.arjlover.net", referrer: "
> > > http://multiki.arjlover.net/info/ostrov.oshibok.avi.html"
> > > 2009/07/14 23:02:57 [debug] 89383#0: *969 event timer add: 80:
> > > 1000:2057662719
> > > 2009/07/14 23:02:58 [debug] 89383#0: *969 event timer del: 80: 2057662719
> > > 2009/07/14 23:02:58 [debug] 89383#0: *969 http run request:
> > > "/multiki/ostrov.oshibok.avi?"
> > > 2009/07/14 23:02:58 [debug] 89383#0: *969 limit_req delay
> >
> > [...]
> >
> > Патч не наложен. Тут должно быть написано "limit_req delay patched 2".
> >
> > Maxim Dounin
> >
> >
>
>
> --
> Best regards,
> Anton Kuznetsov.
More information about the nginx-ru
mailing list