/ / java.net.SocketException: Oprogramowanie spowodowało przerwanie połączenia: recv nie powiodło się; Przyczyny i leki? - Java, wyjątek, gniazda, tomcat

java.net.SocketException: Oprogramowanie spowodowało przerwanie połączenia: recv nie powiodło się; Przyczyny i leki? - java, wyjątek, gniazda, tomcat

Mam aplikację działającą na serwerze Apache Tomcat5.5 na maszynie wirtualnej Win2k3. Aplikacja obsługuje XML, który może zostać wykorzystany przez niektóre urządzenia telefoniczne jako część naszej infrastruktury IVR. Aplikacja z kolei otrzymuje informacje z kilku usług SOAP.

Dziś rano usługi SOAP kończyły sięz przerwami, powodując wszelkiego rodzaju wyjątki. Po ich zatrzymaniu zauważyłem, że nasza aplikacja wciąż działa bardzo wolno, ponieważ długo trwało renderowanie i dostarczanie stron. Ta powolność została zauważona zarówno na urządzeniach, które zużywają wyjście Tomcat, jak i na prostym teście żądania pewnych statycznych dokumentów z mojej przeglądarki internetowej.

Ponowne uruchomienie Tomcat natychmiast rozwiązało problem.

Pękanie otwiera dziennik localhost, widzę masę tych błędów, aż do momentu ponownego uruchomienia Tomcata:

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

Po dużej pracy z Google'em moja teoria pracy jestże problem SOAP spowodował, że moi użytkownicy otrzymali błędy, co spowodowało, że zaczęli zgłaszać więcej żądań, co zwiększyło obciążenie aplikacji. To spowodowało, że zabrakło dostępnych gniazd do obsługi przychodzących żądań.

Oto moje rozterki:
1. Czy jest to ważna hipoteza, czy też jestem po prostu nad głową z HTTP i Tomcat?
2. Jeśli jest to prawidłowa hipoteza, czy istnieje sposób na zwiększenie rozmiaru "kolejki gniazd", aby tak się nie stało w przyszłości?

Dzięki!
Mściciel IVR

Odpowiedzi:

0 dla odpowiedzi № 1

Czy zdarzyło Ci się również sprawdzić, jak działa JVM? "Widziałem podobne zachowanie, gdy w witrynie brakowało pamięci.

Jeśli chodzi o liczbę dostępnych połączeń - możesz to zmienić w pliku tomcat conf / server.xml - jednak domyślnie jest to 150 (jest to dla tomcat 6.0 - nie wiem dla tomcat 5.5).