Welcome! Log In Create A New Profile

Advanced

Re: Большая дисперсия времени выполнения запросов

Gena Makhomed
August 19, 2014 09:28AM
On 19.08.2014 15:10, yury_y wrote:

> столкнулся со следующей проблемой. Сервер работает под нагрузкой порядка
> 300-400 запросов в минуту.
> Из статистики времени выполнения запросов видно, что в некоторых случаях
> "быстрые" запросы, которые обычно занимают несколько миллисекунд, могут
> выполняться по несколько секунд.
> Для иллюстрации проблемы можно рассмотреть такой пример.
>
> Выполняется GET запрос "http://127.0.0.1:777/fcgi/auth..."(без ssl, без
> поиска в dns, сервер слушает на localhost) с локального клиента(на том же
> сервере).
> Запрос, который обычно занимает меньше миллисекунды, в данном случае
> занимает 130 миллисекунд.
>
> Здесь краткая хронология событий из tcpdump-а:
> 16:18:43.095716 - клиент отправляет запрос nginx-у
> 16:18:43.225903 - nginx отправляет запрос upstream-у
> 16:18:43.226178 - upstream отвечает nginx-у
> 16:18:43.226235 - nginx отвечает клиенту
>
> Таким образом upstream отвечает по запрос менее чем за миллисекунду, но 130
> миллисекунд уходит на то чтобы прочесть клиентский запрос и переслать его в
> upstream.
> Такое же поведение наблюдается и при отдаче статики.
>
> Кто-нибудь сталкивался с подобными проблемами? В каком направлении можно
> копать?

каждый worker nginx - однопоточный, он блокируется на дисковых операциях
и не может обрабатывать в этот момент другие запросы что пришли по сети.

1) может помочь увеличение количества worker`ов nginx

2) если OS FreeBSD - там можно попробовать aio режим для статики.
на Linux aio режим пока что имеет смысл использовать только для очень
больших файлов, которые в любом случае не помещаются в файловый кеш.

3) ускорить отдачу динамики можно, если, например, использовать
два разных экземпляра nginx - для отдачи статики и динамики.

11.11.11.11:80 www.example.com - динамика, проксирование запросов
22.22.22.22:80 example.com - статика

тот nginx, который работает для динамики -
не будет блокироваться на дисковых операциях,
а при работе с сетью worker`ы nginx не блокирутся.

4) добавить в сервер еще памяти, чтобы увеличился дисковый кеш

5) использовать SSD вместо HDD для всей отдаваемой сервером статики

6) если используются сторонние модули - причина может быть в них.

7) более точно узнать причину задержек поможет
http://nginx.org/ru/docs/debugging_log.html

--
Best regards,
Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Большая дисперсия времени выполнения запросов

yury_y August 19, 2014 08:10AM

Re: Большая дисперсия времени выполнения запросов

Dmitry August 19, 2014 08:22AM

Re: Большая дисперсия времени выполнения запросов

yury_y August 19, 2014 08:34AM

Re: Большая дисперсия времени выполнения запросов

Gena Makhomed August 19, 2014 09:28AM

Re: Большая дисперсия времени выполнения запросов

yury_y August 19, 2014 11:20AM

Re: Большая дисперсия времени выполнения запросов

Konstantin Baryshnikov August 20, 2014 01:30PM

Re: Большая дисперсия времени выполнения запросов

yury_y August 21, 2014 10:29AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 94
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready