On Wed, Nov 20, 2013 at 12:03:50PM +0300, Bogdan wrote:
> > On Tue, Nov 19, 2013 at 11:58:33PM +0300, Bogdan wrote:
> > > Т.е. непонятно по какой причине poll() зависает на 5 секунд блокируя
> > работу
> > > интерпретатора.
> >
> >  Скорее всего, по той причине, что никаких данных по сети не приходит.
> 
> Не совсем тут понятно, что значит "никаких данных по сети не приходит" -
> т.е. удалённая сторона, в данном случае nginx, установила tcp-соединение,
> но данных в него не послала?

 Может быть и так, но возможно данные посылались и потерялись где-то
 по пути... Нужно не фантазировать а опираться на факт, что poll() вышел
 на таймаут, значит, скорее всего на хосте-приёмнике данных не было.
 И самый быстрый способ проверить это -- посмотреть дамп трафика.
 После чего уже понятно, ядро виновато или локальная сеть.

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

 Что сложного в том, чтобы найти в дампе коннекции с нужными номерами портов?
 Просто указываете tcpdump'у номер порта. Там ещё отметки времени есть.

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

 Наличие потерь и ретрансмиссий в сети легко детектируется по опции SACK.
 Хотя конкретно этот случай (потеря на старте коннекции) так не поймаешь.
-- 
 Eugene Berdnikov


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131120095002.gt4...@protva.ru

Ответить