weblogic卡住的问题 [英] weblogic stuck issue

查看:394
本文介绍了weblogic卡住的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们遇到了以下问题 我们不知道问题是否出在: 1.从数据库读取套接字太长,无法达到StuckThreadMaxTime 600s 2.数据库查询运行时间太长 2.锁定数据库或其他对象

任何建议将不胜感激!

线程36"[STUCK] ExecuteThread:'3'表示队列: 'weblogic.kernel.Default(自我调整)'"{ jrockit.net.SocketNativeIO.readBytesPinned(SocketNativeIO.java:???) jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:31) java.net.SocketInputStream.socketRead0(SocketInputStream.java:???) java.net.SocketInputStream.read(SocketInputStream.java:107) com.microsoft.sqlserver.jdbc.DBComms.receive(未知来源) com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(未知 来源) com.microsoft.sqlserver.jdbc.SQLServerStatement $ StatementExecutionRequest.executeStatement(未知 来源) com.microsoft.sqlserver.jdbc.CancelableRequest.execute(未知源) com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(未知 来源)

^-保持锁定:com.microsoft.sqlserver.jdbc.TDSWriter@41dbbdd [thin lock] com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(未知 来源) com.microsoft.sqlserver.jdbc.SQLServerStatement.getMaxFieldSize(未知 来源) weblogic.jdbc.common.internal.ConnectionEnv.cleanUpStatementForReUse(ConnectionEnv.java:1356) weblogic.jdbc.common.internal.ConnectionEnv.returnCachedStatement(ConnectionEnv.java:1118) ^-持有锁:weblogic.jdbc.common.internal.ConnectionEnv$1@41f2d97 [thin lock] weblogic.jdbc.wrapper.Statement.internalClose(Statement.java:342) weblogic.jdbc.wrapper.Statement.doClose(Statement.java:399) weblogic.jdbc.wrapper.Statement.close(Statement.java:391) com.riskintegrator.infrastructure.database.DBConnector.getConnection(DBConnector.java:66) ^-持有锁:com.riskintegrator.infrastructure.database.DBConnector@1fda7d8 [thin 锁] com.riskintegrator.infrastructure.database.DBConnector.(DBConnector.java:56) com.riskintegrator.slsb.BaseSessionBean.populateFormWithPreparedStatement(BaseSessionBean.java:76) com.riskintegrator.slsb.BaseSession_6uq9n4_EOImpl.populateFormWithPreparedStatement(BaseSession_6uq9n4_EOImpl.java:763) com.riskintegrator.slsb.BaseSessionDelegate.populateFormWithPreparedStatement(BaseSessionDelegate.java:118) com.riskintegrator.slsb.setup.SeverityBandBD.selectByValue(SeverityBandBD.java:181) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean.ComputeRiskScore(ComputeAssessmentScoreBean.java:332) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean.ComputeAssessmentScore(ComputeAssessmentScoreBean.java:119) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean_s478gq_EOImpl.ComputeAssessmentScore(ComputeAssessmentScoreBean_s478gq_EOImpl.java:37) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBD.ComputeAssessmentScore(ComputeAssessmentScoreBD.java:32) com.riskintegrator.slsb.ca.AssessmentScoreBean.ProcessAssessment(AssessmentScoreBean.java:44) com.riskintegrator.slsb.ca.AssessmentScoreSession_nlmr0a_EOImpl.ProcessAssessment(AssessmentScoreSession_nlmr0a_EOImpl.java:37) com.riskintegrator.slsb.ca.AssessmentScoreBD.ProcessAssessment(AssessmentScoreBD.java:36) com.riskintegrator.slsb.ScheduledBatchBean.executeJob(ScheduledBatchBean.java:568) com.riskintegrator.slsb.ScheduledBatchBean.executeDailyRunOnce(ScheduledBatchBean.java:792) com.riskintegrator.slsb.ScheduledBatchBean.ejbTimeout(ScheduledBatchBean.java:957) weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:219)

^-持有锁:weblogic.ejb.container.timer.TimerImpl@12c8e34 [thin lock] weblogic.timers.internal.TimerImpl.run(TimerImpl.java:253) weblogic.work.SelfTuningWorkManagerImpl $ WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516) weblogic.work.ExecuteThread.execute(ExecuteThread.java:198) weblogic.work.ExecuteThread.run(ExecuteThread.java:165)

解决方案

线程转储显示线程被卡住了超过600秒(10分钟),而从SQL Server接收数据.

根据我以前的经验,这可能是长时间运行的数据库查询,也可能是Weblogic和数据库之间的间歇性连接失败 ,从而使套接字处于混乱状态. /p>

这是一次性的还是在其他卡住的线程上使用相同的堆栈跟踪-在同一行上?如果是这样,那么您有机会需要使用SQL Query Analyzer或与其等效的MS-SQL查看数据库查询

如果一次性使用,可能是网络问题

We have encountered an issue as below we don't know if the problem are: 1.socket reading from database is too long that reach the StuckThreadMaxTime 600s 2.database query is running too long 2.locking on database or other objects

any suggestions will be greatly appreciated!

Thread-36 "[STUCK] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" { jrockit.net.SocketNativeIO.readBytesPinned(SocketNativeIO.java:???) jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:31) java.net.SocketInputStream.socketRead0(SocketInputStream.java:???) java.net.SocketInputStream.read(SocketInputStream.java:107) com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source) com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source) com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source) com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source) com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)

^-- Holding lock: com.microsoft.sqlserver.jdbc.TDSWriter@41dbbdd[thin lock] com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source) com.microsoft.sqlserver.jdbc.SQLServerStatement.getMaxFieldSize(Unknown Source) weblogic.jdbc.common.internal.ConnectionEnv.cleanUpStatementForReUse(ConnectionEnv.java:1356) weblogic.jdbc.common.internal.ConnectionEnv.returnCachedStatement(ConnectionEnv.java:1118) ^-- Holding lock: weblogic.jdbc.common.internal.ConnectionEnv$1@41f2d97[thin lock] weblogic.jdbc.wrapper.Statement.internalClose(Statement.java:342) weblogic.jdbc.wrapper.Statement.doClose(Statement.java:399) weblogic.jdbc.wrapper.Statement.close(Statement.java:391) com.riskintegrator.infrastructure.database.DBConnector.getConnection(DBConnector.java:66) ^-- Holding lock: com.riskintegrator.infrastructure.database.DBConnector@1fda7d8[thin lock] com.riskintegrator.infrastructure.database.DBConnector.(DBConnector.java:56) com.riskintegrator.slsb.BaseSessionBean.populateFormWithPreparedStatement(BaseSessionBean.java:76) com.riskintegrator.slsb.BaseSession_6uq9n4_EOImpl.populateFormWithPreparedStatement(BaseSession_6uq9n4_EOImpl.java:763) com.riskintegrator.slsb.BaseSessionDelegate.populateFormWithPreparedStatement(BaseSessionDelegate.java:118) com.riskintegrator.slsb.setup.SeverityBandBD.selectByValue(SeverityBandBD.java:181) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean.ComputeRiskScore(ComputeAssessmentScoreBean.java:332) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean.ComputeAssessmentScore(ComputeAssessmentScoreBean.java:119) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBean_s478gq_EOImpl.ComputeAssessmentScore(ComputeAssessmentScoreBean_s478gq_EOImpl.java:37) com.riskintegrator.slsb.ca.ComputeAssessmentScoreBD.ComputeAssessmentScore(ComputeAssessmentScoreBD.java:32) com.riskintegrator.slsb.ca.AssessmentScoreBean.ProcessAssessment(AssessmentScoreBean.java:44) com.riskintegrator.slsb.ca.AssessmentScoreSession_nlmr0a_EOImpl.ProcessAssessment(AssessmentScoreSession_nlmr0a_EOImpl.java:37) com.riskintegrator.slsb.ca.AssessmentScoreBD.ProcessAssessment(AssessmentScoreBD.java:36) com.riskintegrator.slsb.ScheduledBatchBean.executeJob(ScheduledBatchBean.java:568) com.riskintegrator.slsb.ScheduledBatchBean.executeDailyRunOnce(ScheduledBatchBean.java:792) com.riskintegrator.slsb.ScheduledBatchBean.ejbTimeout(ScheduledBatchBean.java:957) weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:219)

^-- Holding lock: weblogic.ejb.container.timer.TimerImpl@12c8e34[thin lock] weblogic.timers.internal.TimerImpl.run(TimerImpl.java:253) weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516) weblogic.work.ExecuteThread.execute(ExecuteThread.java:198) weblogic.work.ExecuteThread.run(ExecuteThread.java:165)

解决方案

The thread dump shows that the thread has been stuck for longer than 600 seconds (10 mins) while receiving back data from the SQL Server.

In my prev experience this can be either a long running DB query or an intermittent connectivity failure between Weblogic and the database leaving the socket in a state of limbo.

Is this a one-off or is the same stacktrace is available on other stuck threads as well - at the same line ? If it is, then there are chances you need to review the DB query with SQL Query Analyzer or it's equivalent in MS-SQL

If it's a one-off it could be the network issue

这篇关于weblogic卡住的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆