/ / java.net.SocketException: il software ha causato l'interruzione della connessione: recv fallito; Cause e cure? - java, exception, socket, tomcat

java.net.SocketException: Il software ha causato l'interruzione della connessione: recv fallito; Cause e cure? - java, exception, socket, tomcat

Ho un'applicazione in esecuzione su Apache Tomcat5.5 su una macchina virtuale Win2k3. L'applicazione serve XML per essere consumato da alcuni dispositivi di telefonia come parte della nostra infrastruttura IVR. L'applicazione, a sua volta, riceve le sue informazioni da una manciata di servizi SOAP.

Questa mattina, i servizi SOAP sono scadutia intermittenza, causando tutti i tipi di eccezioni. Una volta che si sono fermati, ho notato che la nostra applicazione si stava ancora esibendo molto lentamente, in quanto ci voleva molto tempo per eseguire il rendering e consegnare le pagine. Questa lentezza è stata notata sia sulle appliance che consumano l'output di Tomcat, sia da un semplice test di richiesta di alcuni documenti statici dal mio browser web.

Il riavvio di Tomcat ha risolto immediatamente il problema.

Cracking apre il log del localhost, vedo un sacco di questi errori, fino a quando non ho riavviato Tomcat:

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

Dopo un po 'di ricerca su Google, la mia teoria del lavoro èche il problema SOAP ha causato errori ai miei utenti, che hanno causato loro ulteriori richieste, che hanno aumentato il carico sull'applicazione. Ciò ha causato l'esaurimento dei socket disponibili per gestire le richieste in arrivo.

Quindi, ecco il mio dilemma:
1. È un'ipotesi valida o sono semplicemente in testa con HTTP e Tomcat?
2. Se questa è un'ipotesi valida, c'è un modo per aumentare la dimensione della "coda di socket", in modo che questo non accada in futuro?

Grazie!
Vendicatore IVR

risposte:

0 per risposta № 1

Ti è capitato di verificare anche come si stava esibendo la JVM? Ho visto un comportamento simile quando un sito ha esaurito la memoria.

Per quanto riguarda il numero di connessioni disponibili, puoi modificarlo in tomcat conf / server.xml, ma per impostazione predefinita è 150 (questo è per tomcat 6.0 - non è sicuro per tomcat 5.5).