Дополнительная информация... Может, на
какую идею натолкнет.
По tcpdump-у на предмет исходящих
соединений видно следующее (во время
"тормозов", под 10 тыс. rps).
1. Первый SYN - улетает.
2. В ответ прилетает SYN+ACK, как положено.
Практически мгновенно, в пределах
одной миллисекунды.
3. А вот ответный ACK уезжает с изрядной
задержкой, до 500 миллисекунд. За это
время у меня успевает сработать
proxy_connect_timeout, который по условиям задачи
весьма жесткий (70 мсек).
4. После этого следующий пакетик с
исходящими данными (собственно
запросом) - улетает опять-таки почти
мгновенно, в пределах 1-2 мсек, и весь
дальнейший диалог происходит с
минимальными задержками.
То есть, тормоза именно в п. 3, когда
отсылается первый ACK после получения
SYN+ACK.
Когда тормозов нет (нагружаем 6 тыс. rps) -
в п. 3 видим приятную картиру, ответный
ACK улетает мгновенно, в пределах одной
мсек.
Подозреваю, что ядро блокируется где-то
в районе списков pcb, или как их там
зовут...