неудачные запросы HTTP на Tomcat - PullRequest
3 голосов
/ 15 декабря 2010

Мое веб-приложение работает на 64-битной Java 6.0.23, Tomcat 6.0.29 (с Apache Portable Runtime 1.4.2), на Linux (CentOS). JAVA_OPTS Tomcat включает в себя -Xincgc, который, как предполагается, поможет предотвратить длинные сборки мусора.

Приложение находится под большой нагрузкой и имеет периодические сбои, и я хотел бы устранить его.

Вот симптом: очень периодически HTTP-клиент отправляет HTTP-запрос в веб-приложение и возвращает пустой ответ.

Приложение не использует базу данных, поэтому это определенно не проблема с соединениями JDBC. Так что я полагаю, что проблема, возможно, одна из: памяти (возможно, длинные сборки мусора), из потоков или из файловых дескрипторов.

Я использовал javamelody для просмотра количества используемых потоков, и кажется, что maxThreads установлен достаточно высоко, чтобы не заканчиваться потоками. Точно так же мы имеем очень большое число доступных файловых дескрипторов.

Приложение использует много памяти. Кажется ли, что память, вероятно, является виновником здесь, или есть что-то еще, что я мог упускать из виду?

Полагаю, моя главная путаница заключается в том, почему сборка мусора может привести к сбою HTTP-запросов. Интуитивно понятно, что я полагаю, что длительная сборка мусора может привести к тому, что выполнение HTTP-запроса может занять много времени, но я не думаю, что длинная сборка мусора приведет к сбою HTTP-запроса.


Дополнительная информация в ответ на комментарии Джона Скита ...

У клиента точно нет времени ожидания. Пустой ответ происходит довольно быстро. Когда происходит сбой, нет данных и нет заголовков HTTP.

1 Ответ

0 голосов
/ 15 декабря 2010

Я очень сомневаюсь, что сборщик мусора ответственен за проблему.

Вы действительно действительно должны точно выяснить, из чего состоит этот "пустой ответ":*

Сервер просто прерывает соединение? Возможно ли время ожидания для клиента? Предоставляет ли сервер действительный ответ HTTP, но без данных?

Каждый из них мог бы предложить очень разные способы выяснить, что происходит.Определение режима отказа должно быть вашей главной задачей, IMO.Пока вы не знаете, это полная догадка.

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