0

我正在开发一个宁静的网络服务,它应该返回巨大的文件(2GB 或更大)。这个网络服务的执行当然需要时间。在使用多个并行下载对其进行测试时,WLS 会引发 BEA-000337 错误(下载所需的时间超过了服务器配置中设置的“Stuck Thread Max Time”)。

我的问题是我找不到仅针对新 Web 服务调整它的方法。“Stuck Thread Max Time”设置是在服务器级别设置的,这意味着它将影响所有其他服务。这是不可接受的。我需要一种方法来为新服务设置它。

似乎我应该能够使用自己定义的 WorkManagers,但我在 WorkManagers 的文档中可以找到的唯一配置选项处理卡住线程的处理,而不是如何识别线程是否卡住。

我的问题是:

有没有办法在 wls 中配置,仅针对这个新的 Web 服务,它应该如何识别卡住的线程以及它应该如何处理这些线程?

我使用的 WLS 版本是 10.3.6

4

2 回答 2

0

Weblogic 是用于 javaEE 应用程序的应用程序服务器,使应用程序服务器具有吸引力的特性之一是它们充当容器来处理许多本来应该以编程方式完成的东西。其中之一是线程管理。因此,在 EJB 限制中,您可以找到:

-创建或管理线程

- 使用线程同步原语与其他企业 bean 实例同步访问

这是因为线程处理取决于容器。在 weblogic 控制台中,您可以为每台托管服务器(配置 > 调整选项卡)配置“Stuck Thread Max Time”参数,更改默认值 600 秒。无论如何请记住,当线程处理超过 600 秒时,您会在日志中收到错误,因为 Weblogic 只是将线程归类为卡住,但处理仍在继续,并且在处理结束时线程最终可能会解开。

这可能有用:

https://docs.oracle.com/cd/E84527_01/wls/WLACH/taskhelp/tuning/TuningExecuteThreads.html

于 2018-12-20T21:38:25.107 回答
0

您的处理需要时间,StuckThreadMaxTime 的默认设置设置为 600 秒,您将在日志中看到此类错误。

您可以将 StuckThreadMaxTime 设置为更大的值(它位于 weblogic 控制台中:域 > 环境 > 服务器 > 管理服务器 > 配置/调整)

于 2018-12-20T06:02:22.977 回答