[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: poll() timeout в PHP-FPM при получении запросов от Nginx



Добрый день, спасибо за ответ.

2013/11/20 Eugene Berdnikov <bd4@protva.ru>
On Tue, Nov 19, 2013 at 11:58:33PM +0300, Bogdan wrote:
> Т.е. непонятно по какой причине poll() зависает на 5 секунд блокируя работу
> интерпретатора.

 Скорее всего, по той причине, что никаких данных по сети не приходит.



Не совсем тут понятно, что значит "никаких данных по сети не приходит" - т.е. удалённая сторона, в данном случае nginx, установила tcp-соединение, но данных в него не послала?

Сравнивал с "нормальным" режимом функционирования системы - там таких пауз и близко не наблюдается. Вероятность отсуствия запроса в течении 5 секунд при интенсивности порядка 1000-1500 запросов в секунуд мне кажется очень маленькой. Рабочих процессов 64, ну максимум 128. Я тоже рассматриваю проблему межсерверной сетью, но варианты "какая-то проблема в ядре с одной из сторон" и "nginx перестал посылать запросы" пока не могу исключить.

 

 
> Вероятность проблемы может быть весьма высокой, например
> 1/60, что при условии получения 1000-1500 запросов в секунду очень
> болезненно.
> Подскажите, куда дальше копать?

 Убедиться, что данных действительно нет, если в этом сомневаетесь.
 Т.е. tcpdump в руки и искать эту коннекцию.

Ну поискать-то в этом потоке будет весьма сложно, потому я и интересовался про ретрансмиты - этот параметр можно посмотреть на сервере где запущен nginx. Но и в самом деле - снифер вполне подойдёт, там тоже будет видно. Коммутатор мне недоступен (внутреннюю сеть предоставляет дата-центр), а потерь на интерфейсах судя по ifconfig нет.

 

> Может быть где-то в /proc или /sys есть общесистемный счётчик tcp
> retransmit для каждого интерфейса либо IP, чтобы проверить версию с
> потерями пакетов во внутренней сети?

 Есть общий счётчик: netstat -s (ака /proc/net/netstat).

 При чём тут счётчик ретрасмиссий -- непонятно: речь же о входящих пакетах,
 а не исходящих. Все счётчики интерфейса показывает ip -s link dev...

Я планировал посмотреть ретрансмиты на сервере который выполняет nginx и шлёт запросы к PHP-FPM, но т.к. tcp-счётчиков для интерфейсов видимо нет, буду использовать снифер.
 

 Для проверки версии о потерях пакетов достаточно сравнить счётчики
 интерфейсов клиента и сервера. Вообще, нормальные свитчи тоже умеют
 вести статистику по интерфейсам, а также считать дропнутые пакетики.

На сервере со счётчиками уровня ethernet всё хорошо, а коммутатор мне к сожалению недоступен.

 
--
 Eugene Berdnikov


--
To UNSUBSCRIBE, email to debian-russian-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: [🔎] 20131120065121.GR4064@protva.ru" target="_blank">http://lists.debian.org/[🔎] 20131120065121.GR4064@protva.ru




--
WBR,  Bogdan B. Rudas

Reply to: