Проблема Grails + Tomcat + Ubuntu: соединения CLOSE_WAIT - PullRequest
2 голосов
/ 03 марта 2010

Я столкнулся с действительно странной проблемой стабильности при работе при запуске тривиального приложения Grails с использованием стандартных компонентов.

После некоторого времени нормальной работы число соединений TCP Tomcat (jsvc) в состоянии CLOSE_WAIT увеличивается до тех пор, пока Tomcat не достигнет своего потолка потока (Maximum number of threads (N) created for connector), после чего Tomcat остановится.

Обычно это означает, что приложение содержит код, который неправильно закрывает TCP-соединения. Тем не менее, мой код Grails в этом приложении действительно триальный и не инициирует какие-либо TCP-соединения сам по себе, поэтому я не могу представить ни одного сценария, в котором мой код мог бы вызвать проблему CLOSE_WAIT.

Кроме того, все компоненты в стеке - все стандартные компоненты, которые, как я полагаю, не содержат ошибок; Я использую Grails 1.2.1 под стандартным Tomcat 6, который поставляется в комплекте с Ubuntu 9.1 (apt-get install tomcat6).

  • Это известная проблема?
  • Как бы вы пошли об устранении неполадок?

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Филип Ханик "Tomcat Expert Series: настройка производительности" (2009) - отличное руководство по настройке производительности и настройке стабильности в Tomcat.

Мне показались актуальными следующие советы в руководстве:

  • Обзор параметров настройки: Потоки, Keep-Alives, Журнал ожидания TCP (acceptCount), connectionTimeout, буферы сокетов, соединители: BIO против APR против NIO (стр. 24)
  • Как выбрать между разъемами BIO / APR / NIO (стр. 26-32)
  • Настройка maxThreads (стр. 33-34)
  • Настройка maxKeepAliveRequests (стр. 35-36)
  • Настройка acceptCount (стр. 37-38)
  • Настройка соединения Timeout (стр. 39-40)
  • Настройка параметров JVM (стр. 44-50)

В случае, описанном здесь, переключение на разъем NIO, увеличение maxThreads и уменьшение connectionTimeout могут помочь.

0 голосов
/ 03 марта 2010

Есть ли в сценарии брандмауэр? Как правило, через некоторое время они теряют простаивающее соединение TCP / IP, что приводит к тому, что вы видите.

...