Weblogic Coincé Fil sur JDBC appel
Qui nous sont fréquemment une série de Coincé threads sur nos serveurs Weblogic. Je l'ai analysé sur une période de temps.
Ce que j'aimerais comprendre, c'est que cette collé filetage du bloc indique c'est encore la lecture des données à partir de la prise de la base de données puisque les requêtes sont simples SÉLECTIONNEZ trucs?
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at oracle.net.ns.Packet.receive(Packet.java:239)
at oracle.net.ns.DataPacket.receive(DataPacket.java:92)
Nous avons exécuté la commande netstat et d'autres commandes, prises à partir de l'application Weblogic server pour la Base de données en fonction du nombre de connexions dans le pool.
Toutes les idées que d'autre que nous devrions étudier ici?
Trace de la pile du thread dump:
"[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x61a5b000 nid=0x25f runnable [0x6147b000..0x6147eeb0]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at oracle.net.ns.Packet.receive(Packet.java:239)
at oracle.net.ns.DataPacket.receive(DataPacket.java:92)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:172)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:117)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:92)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:77)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1023)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:999)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:584)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:314)
- locked <0x774546e0> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:228)
- locked <0x774546e0> (a oracle.jdbc.driver.T4CConnection)
at weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.next(Unknown Source)
Les bits à partir de weblogic.work.ExecuteThread.run
ici a été omis. Nous avons 8 ensembles de fil dépôts - et chaque montrer le thread en attente sur la même ligne et le même objet verrouillé
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:314)
- locked <0x774546e0> (a oracle.jdbc.driver.T4CConnection)
weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.next
en bas de la pile?nope, le reste est à notre code à l'appel de cette via springframework API.
StuckThreadMaxTime
est à compter à partir de weblogic.work.ExecuteThread.execute
. Peut-être que la base de données n'est pas le seul endroit à regarder pour...vrai, mais nous avons 8 jeux de TDs prises dans les 4 minutes, et le fil est sur la même ligne
oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:314) - locked <0x773c1758> (a oracle.jdbc.driver.T4CConnection)
pourriez-vous s'il vous plaît laissez-moi savoir quel était le problème dans votre cas ?
OriginalL'auteur JoseK | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
Au moment de la pile a été imprimé, il semble bloqué en attente pour plus de données à partir du serveur
Peut-être que c'est juste la requête qui prend plus de
StuckThreadMaxTime
et WL émet un Avertissement.Si possible, j'aimerais essayer:
Nous avons trouvé notre chauffeur est dans
ojdbc6.jar
et nous utilisons JDK1.6 connexion à Oracle 10.2.0.4 db. Le débat que nous devrions essayer avecojdbc14.jar
plutôt que depuis le db n'est pas Oracle 11Autant que je sache, il est recommandé d'utiliser les dernières JDBC comme elle est compatible avec les 10g et a quelques corrections de bugs (voir confluence.atlassian.com/display/JIRA/...)
OriginalL'auteur fglez
si vous utilisez weblogic debug -Dweblogic.debug.DebugJDBCSQL vous serez en mesure de retracer le SQL qui est réellement exécuté
OriginalL'auteur Pierluigi Vernetto