2011-05-16 51 views
0

我正在使用JDBC查詢Teradata服務器。有多達100個同時請求,每個請求使用一個新的連接,並在最後關閉它。經過幾個小時的工作,一些執行請求的線程被無限期地卡住了。最終需要重啓系統。 從檢查調用堆棧,我看到線程都在讀取套接字狀態,並且它在準備語句或當關閉連接情況:線程永久掛在JDBC Teradata請求上

案例1:

java.lang.Thread.State: RUNNABLE 
       at java.net.SocketInputStream.socketRead0(Native Method) 
       at java.net.SocketInputStream.read(SocketInputStream.java:129) 
       at com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF.read(TDNetworkIOIF.java:649) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:818) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:125) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:112) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(StatementController.java:103) 
       at com.teradata.jdbc.jdbc_4.Statement.executeStatement(Statement.java:340) 
       at com.teradata.jdbc.jdbc_4.Statement.prepareRequest(Statement.java:507) 
       - locked <0x00002aab4f787518> (a com.teradata.jdbc.jdbc_4.PreparedStatement) 
       at com.teradata.jdbc.jdbc_4.PreparedStatement.<init>(PreparedStatement.java:66) 
       at com.teradata.jdbc.jdbc_4.TDSession.createPreparedStatement(TDSession.java:723) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalPreparedStatement.<init>(TeraLocalPreparedStatement.java:89) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.prepareStatement(TeraLocalConnection.java:333) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.prepareStatement(TeraLocalConnection.java:152) 
... 

案例2:

java.lang.Thread.State: RUNNABLE 
       at java.net.SocketInputStream.socketRead0(Native Method) 
       at java.net.SocketInputStream.read(SocketInputStream.java:129) 
       at com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF.read(TDNetworkIOIF.java:649) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:818) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:794) 
       at com.teradata.jdbc.jdbc.GenericLogOffRspState.action(GenericLogOffRspState.java:66) 
       at com.teradata.jdbc.jdbc.GenericLogoffController.run(GenericLogoffController.java:43) 
       - locked <..> (a com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF) 
       at com.teradata.jdbc.jdbc_4.TDSession.close(TDSession.java:476) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.close(TeraLocalConnection.java:259) 
... 

我正在使用JDBC Teradata驅動程序版本13.10.00.10。

任何想法爲什麼會發生? 這個問題對我們來說非常痛苦,任何幫助將不勝感激。

謝謝!

回答

2

您是否嘗試升級到JDBC驅動程序的最新修補程序版本? 13.10.00.18於2011-04-12發佈。版本13.10.00.15包含一個修補程序,用於糾正多線程併發登錄嘗試在MIC計算期間拋出GSSException異常:錯誤的問題。

如果這不能解決問題,並且您的客戶/公司是Teradata客戶,我會建議您通過Teradata全球支持中心開放事件。

+0

謝謝,我只是寫了一段簡單的代碼來重現它,而且我稍後可能會打開一個事件。 – 2011-05-20 20:51:20