Я пытаюсь улучшить производительность (виртуального) веб-сервера с помощью довольно стандартной установки 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>