Uno dei nostri clienti presenta un problema nuovo: l'applicazione si arresta. Il dump del thread mostra che tutti i thread sono appesi all'IO di rete nelle chiamate JDBC.Connessione JDBC sospesa
Non ho mai visto questi 'network IO' bloccati. In genere un problema con la macchina lenta con DB ha o una) una o due query di lunga durata o b) un tipo di blocco/deadlock. In entrambi i casi, i thread si bloccano su metodi diversi. Non ho mai visto tutti i 30+ thread appesi all'IO di rete.
Di seguito ho incluso un estratto dal dump del thread. Tutti i thread HTTP sono sospesi sulla stessa chiamata java.net.SocketInputStream.read
.
Ho parlato con loro dba e sysadmin. Secondo loro "nulla è cambiato" nell'ambiente di recente che potrebbe causare questo problema.
ambiente db
MSSQL 2005 Service Pack 2 a 64 bit driver: sqljdbc.jar: 1,0 809 102
Nota: sono in esecuzione un driver JDBC più vecchio. AFAIK hanno provato ad aggiornare da 1.0 al driver 1.2 ma avevano qualche altro problema.
altro ambiente emette
Stanno in esecuzione sia il server applicazione e il server db in VMWare VM. Non so come questa configurazione influenzi le prestazioni della rete.
Apparentemente questa è l'unica applicazione con questo problema. Non conosco altro sulla loro architettura di rete.
Domande * eventuali approfondimenti su questo problema? * se si tratta di rete, eventuali passi successivi per l'analisi?
Appendice A: Estratto dal filo discarica
Tutte le connessioni HTTP sono appesi con lo stesso metodo:
"TP-Processor31" daemon prio=5 tid=0x04085b78 nid=0x970 runnable [0x0764d000..0x0764fd6c] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source) at com.microsoft.sqlserver.jdbc.IOBuffer.sendCommand(Unknown Source) - locked (a com.microsoft.sqlserver.jdbc.DBComms) at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteQuery(Unknown Source)
Ho visto cose del genere se la connessione passa attraverso uno stupido gateway NAT – nos