簡體   English   中英

在Weblogic jms MessagingBridge中獲取RMI調用的詳細信息

[英]Get details of RMI call in Weblogic jms MessagingBridge

我在Weblogic控制台中看到了卡住的線程,並且在它的threaddump中沒有特定於項目的類。 我意識到某些東西正在工作,因為它可能從套接字讀取,等待對象鎖定等,所以它實際上沒有卡住,它是長時間運行的。 並且DB中沒有長時間運行的查詢。

我怎么知道,該線程中正在運行什么代碼? 線程轉儲如下

java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
java.net.SocketInputStream.read(SocketInputStream.java:182)
java.io.DataInputStream.readLine(DataInputStream.java:496)
weblogic.rjvm.t3.MuxableSocketT3.connect(MuxableSocketT3.java:401)
weblogic.rjvm.t3.ConnectionFactoryT3.createConnection(ConnectionFactoryT3.java:34)
weblogic.rjvm.ConnectionManager.createConnection(ConnectionManager.java:1777)
weblogic.rjvm.ConnectionManager.findOrCreateConnection(ConnectionManager.java:1417)
weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:437)
weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:396)
weblogic.rjvm.RJVMImpl.ensureConnectionEstablished(RJVMImpl.java:304)
weblogic.rjvm.RJVMImpl.getOutputStream(RJVMImpl.java:348)
weblogic.rjvm.RJVMImpl.getRequestStreamInternal(RJVMImpl.java:610)
weblogic.rjvm.RJVMImpl.getRequestStream(RJVMImpl.java:561)
weblogic.rjvm.RJVMImpl.getOutboundRequest(RJVMImpl.java:787)
weblogic.rmi.internal.BasicRemoteRef.getOutboundRequest(BasicRemoteRef.java:159)
weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:211)
weblogic.jdbc.common.internal.ReaderBlockGetterImpl_1033_WLStub.getBlock(Unknown Source)
weblogic.jdbc.common.internal.ReaderHandler.refreshCacheIfNeeded(ReaderHandler.java:175)
weblogic.jdbc.common.internal.ReaderHandler.read(ReaderHandler.java:56)
oracle.jdbc.driver.OraclePreparedStatement.setReaderContentsForStringInternal(OraclePreparedStatement.java:9774)
oracle.jdbc.driver.OraclePreparedStatement.setCharacterStreamInternal(OraclePreparedStatement.java:9629)
oracle.jdbc.driver.OraclePreparedStatement.setCharacterStreamInternal(OraclePreparedStatement.java:9570)
oracle.jdbc.driver.OraclePreparedStatement.setCharacterStream(OraclePreparedStatement.java:9561)
oracle.jdbc.driver.OraclePreparedStatementWrapper.setCharacterStream(OraclePreparedStatementWrapper.java:656)
weblogic.jdbc.wrapper.PreparedStatement.setCharacterStream(PreparedStatement.java:511)
weblogic.jdbc.rmi.internal.PreparedStatementImpl.setCharacterStream(PreparedStatementImpl.java:199)
weblogic.jdbc.rmi.internal.PreparedStatementImpl.setCharacterStream(PreparedStatementImpl.java:135)
weblogic.jdbc.rmi.internal.PreparedStatementImpl_weblogic_jdbc_wrapper_PreparedStatement_oracle_jdbc_driver_OraclePreparedStatementWrapper_WLSkel.internalInvoke1(Unknown Source)
weblogic.jdbc.rmi.internal.PreparedStatementImpl_weblogic_jdbc_wrapper_PreparedStatement_oracle_jdbc_driver_OraclePreparedStatementWrapper_WLSkel.invoke(Unknown Source)
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

如果您看到線程卡住了,您可以通過幾種方法來檢測它的來源:

  • 在weblogic控制台中,轉到Servers -> <server name> -> Monitoring -> Threads tab

    • 從那里你可以對所有線程進行排序,並可能看到你的線程
    • 您還可以單擊Dump Thread Stacks ,看看是否有卡住的東西
  • 使用jConsole,它與JDK(或類似的東西)一起連接到您的weblogic服務器

    • 單擊threads選項卡,然后單擊Detect Deadlock按鈕以查看是否發生了死鎖,換句話說,是一個永久卡住的線程

由於它確實與數據庫有關,因此有更多想法:

  • 在weblogic控制台中,轉到Data Sources -> <jdbc source name> -> Connection Pool tab

    • 在高級部分中,設置Statement Timeout並查看其他設置,例如Test Connections on Reserve
  • 在weblogic控制台中,轉到Servers -> <server name> -> Tuning and Overload

    • 如果您不希望每600秒報告一次這些事件,則增加“ Max Stuck Thread Time ”(默認值)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM