首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Weblogic服务器尝试抑制当前工作线程,并开始处理新请求

Weblogic服务器尝试抑制当前工作线程,并开始处理新请求
EN

Stack Overflow用户
提问于 2011-06-19 19:00:21
回答 2查看 1.5K关注 0票数 0

我有一个部署在WebLogic9.2上的web应用程序,它使用Apache完成的代理传递负载平衡。我能够观察到,每当有新的请求进入时,当前的请求处理都会暂停。只有在峰值负载条件下才能观察到这种情况。等待时间高达6-7秒,然后当前线程启动。此行为是从应用程序日志中得出的。应用程序使用默认的工作管理器设置。我们还在应用程序中使用了自定义工作管理器。系统参数正常。少于50%的CPU、内存,甚至GC周期也不到2秒。在日志中也没有观察到异常。线程监视器没有显示任何卡住的线程。可能的原因是什么?当前线程是否被推送到较低的优先级?

EN

回答 2

Stack Overflow用户

发布于 2011-06-20 15:51:17

Weblogic不会将当前线程降级到较低的优先级,它始终会在选取新线程之前完成当前线程。

如何确认当前线程正在等待6-7秒?理想情况下,在高峰时间进行几个线程转储(在Unix上使用kill -3 <pid> ),然后查看所有这些等待线程在做什么?

我不会调用这些卡住的线程,但可能会有对某些资源的争用(通常数据库是罪魁祸首,或者是像web服务这样的外部调用)。

你有没有这样的场景,你正在调用的一些下游系统--有时该系统无法处理峰值负载。

获取4或5组线程转储,每组之间的间隔为5秒。所以在最后,你会有一个单独的日志文件,它在应用服务器上有大约20 - 25秒的动作。

然后你应该检查你想要检查的是一个长时间运行的事务正在发生,所有的线程转储都会显示某个线程id在你的java堆栈跟踪中的同一行。简而言之,事务(比如在EJB或数据库中)跨越多个线程转储,因此需要更多的调查。

花2秒完成GC的频率是多少?

我怀疑由于在某些点上存在争执,所以在你看来,新的请求似乎正在获得优先级,而实际上它们也会在同一点等待。

票数 1
EN

Stack Overflow用户

发布于 2011-07-01 09:50:28

最终找到了解决方案。weblogic应用程序服务器配置了默认的工作管理器设置。这被更改为基于并发请求的大小,初始容量为100。还确保数据库连接池具有池中相应的可用连接。设置这些配置后,问题不再出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6401976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档