java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка recv; Причины и лекарства? - PullRequest
2 голосов
/ 22 сентября 2009

У меня есть приложение, работающее на Apache Tomcat 5.5 на виртуальной машине Win2k3. Приложение обслуживает XML для использования некоторыми телефонными устройствами в рамках нашей инфраструктуры IVR. Приложение, в свою очередь, получает информацию от нескольких сервисов SOAP.

Этим утром службы SOAP периодически прерывались, вызывая всевозможные исключения. Как только они прекратились, я заметил, что наше приложение все еще работает очень медленно, так как рендеринг и доставка страниц занимают много времени. Эта медлительность была замечена как на устройствах, которые используют выходные данные Tomcat, так и на простом тесте запроса некоторых статических документов из моего веб-браузера.

Перезапуск Tomcat немедленно решил проблему.

Взломав журнал localhost, я вижу кучу этих ошибок, вплоть до перезапуска Tomcat:

WARNING: Exception thrown whilst processing POSTed parameters  
java.net.SocketException: Software caused connection abort: recv failed

После большого количества поисков в Google моя рабочая теория заключается в том, что проблема с SOAP приводила к тому, что мои пользователи получали ошибки, в результате чего они делали больше запросов, что увеличивало нагрузку на приложение. Это вызвало исчерпание доступных сокетов для обработки входящих запросов.

Итак, вот мое затруднение:
1. Это правильная гипотеза, или я просто по уши с HTTP и Tomcat?
2. Если это правильная гипотеза, есть ли способ увеличить размер «очереди сокетов», чтобы в будущем этого не произошло?

Спасибо!
IVR Avenger

1 Ответ

0 голосов
/ 22 сентября 2009

Вы также проверяли, как работает JVM? Я видел подобное поведение, когда на сайте не хватало памяти.

Что касается количества доступных соединений - вы можете изменить это в tomcat conf / server.xml - однако по умолчанию это 150 (это для tomcat 6.0 - не обязательно для tomcat 5.5).

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