Оценка / диагностика временных соединений в SYN_RECV перед установкой - PullRequest
2 голосов
/ 05 октября 2011

Я пытаюсь улучшить производительность (виртуального) веб-сервера с помощью довольно стандартной установки CentOS / Apache, и одна вещь, которую я заметил, заключается в том, что новые соединения, похоже, «залипают» в состоянии SYN_RECV, иногда на несколько секунд,прежде чем окончательно быть установленным и обработанным Apache.

Моим первым предположением было то, что Apache может достигать предела для числа соединений, которые он готов обрабатывать одновременно, но, например, с keep-alive off netstat сообщает о нескольких установленныхсоединения (только те, которые не включают localhost, поэтому отбрасывают «служебные» соединения, например, между Apache и Tomcat), в то время как с keep-alive он будет успешно получать до 100+ установленных соединений (но в любом случае без явного различия в поведении SYN_RECV -- обычно в SYN_RECV одновременно находится 10-20 соединений.

Каковы рекомендации людей по выяснению узкого места, препятствующего быстрому установлению соединений?

PS Дополнительный вопрос: кто-нибудь знает, какой будет ТИПИЧНАЯ статистика для времени установления соединения после первого «попадания» на сервер?

Обновление в случае, если кто-то еще сталкиваетсяэто: В конце я написал небольшую Java-программу, которая берет данные из / proc / net / tcp и анализирует их, и кажется, что это происходит для небольшой части соединений (хотя это по-прежнему означает, что в любое времяв этом состоянии может быть несколько соединений, потому что они могут оставаться такими в течение нескольких секунд) и это выглядит как проблема, локальная для этих соединений.Более 90% соединений все еще проходят через <500 мс и 81% через <200 мс.Так что, если другие поймут это, не обязательно немедленно паниковать. </p>

1 Ответ

3 голосов
/ 05 октября 2011

Попробуйте захватить трассировку пакета и посмотрите, передаются ли SYN ACK повторно (и количество повторных передач).Это может указывать на проблему маршрутизации (SYN входит по пути A, а SYN-ACK идет по пути B, который не работает).

Также проверьте, имеют ли эти соединения определенный шаблон (например, исходящий из той же сети).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...