Weblogic服务器得到卡住线程最大时间异常.我该如何解决它



>我公开了一个 REst 服务,它反过来调用一个脚本文件(shell 脚本),这需要 20 分钟才能完成并发送响应。我在日志中收到以下异常。

<Error> <WebLogicServer> <AdminServer>     
<[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self- tuning)'> <<WLS Kernel>> <> <> <1457678291528> <BEA-000337> 
<[STUCK] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "606" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 606763 ms
[
POST /svc/oneclick/wsAuto/createTemplate/005056A509C4 HTTP/1.1
User-Agent: oneclick
Accept: */*
X-Forwarded-For: 10.19.120.25
X-Forwarded-Host: 10.19.120.48
X-Forwarded-Server: XXX-XXX-template-sa1.XXX.com
Connection: Keep-Alive
]", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
Thread-34 "[STUCK] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'" <alive, suspended, waiting, priority=1, DAEMON> {-- Waiting for notification on: java.lang.UNIXProcess@9a5ed5a[fat lock]

因为您的处理需要 20 分钟,并且 StuckThreadMaxTime 的默认设置设置为 600 秒,您将在日志中看到此类错误。您有两种选择:

  • 加快处理速度
  • 将 StuckThreadMaxTime 设置为更大的值(将其放置在 weblogic 控制台上的:域>环境>服务器>管理服务器>配置/调整)

如果处理确实需要 20 分钟,请在域中的所有服务器上更改 StuckThreadMaxTime。理想情况下,在部署应用程序的服务器上。如何更改:http://docs.oracle.com/cd/E23943_01/apirefs.1111/e13952/taskhelp/tuning/TuningExecuteThreads.html