执行性能测试后,Web Logic集群中的几个节点出现了同样的原因:
"[ACTIVE] ExecuteThread: '201' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock java.util.WeakHashMap@8632059 BLOCKED
weblogic.logging.WLLogger.normalizeLogRecord(WLLogger.java:60)
weblogic.logging.WLLogger.log(WLLogger.java:37)
weblogic.diagnostics.debug.DebugLogger.log(DebugLogger.java:231)
weblogic.diagnostics.debug.DebugLogger.debug(DebugLogger.java:204)
weblogic.jdbc.wrapper.JDBCWrapperImpl.trace(JDBCWrapperImpl.java:169)
weblogic.jdbc.wrapper.ResultSet.preInvocationHandler(ResultSet.java:83)
weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.getLong(Unknown Source)
同一
共阻止了126个主题waiting for lock java.util.WeakHashMap@8632059
我真的很想知道,这可能会导致这种奇怪的行为,我期待数据库性能出现问题或者缺少jdbc连接,但是没有记录日志问题。如果是这样,是否可以以某种方式禁用此日志记录?
其他节点也有
"[STUCK] ExecuteThread: '206' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock weblogic.logging.FileStreamHandler@153405fb BLOCKED
com.bea.logging.RotatingFileStreamHandler.publish(RotatingFileStreamHandler.java:75)
java.util.logging.Logger.log(Logger.java:610)
com.bea.logging.BaseLogger.log(BaseLogger.java:51)
weblogic.logging.WLLogger.log(WLLogger.java:42)
有15个被阻止的线程。 在所有情况下,底层方法都执行小jpa查询,由于缓存无效而从db中选择用户。
答案 0 :(得分:0)
我遇到了完全相同的问题。很少有线程转储表明Weblogic卡在某种内部调试日志中:
- weblogic.diagnostics.debug.DebugLogger.log(java.util.logging.Level, java.lang.String, java.lang.Throwable) @bci=56, line=246 (Compiled frame)
- weblogic.diagnostics.debug.DebugLogger.debug(java.lang.String) @bci=6, line=211 (Compiled frame)
可以在环境>管理控制台中配置内部调试级别。服务器> MyServer>调试。就我而言,我发现所有可能的范围都已启用。禁用调试日志记录并重新启动服务器问题后,消失了。