检测到CPU 饥饿。当前线程调度延迟X秒。求助!

内存溢出了么?检测到CPU 饥饿,怎么理解?最后是was重启了吧?请大家帮忙看看。生产环境的日志。我看不明白显示全部


内存溢出了么?

检测到CPU 饥饿,怎么理解?

最后是was重启了吧?

请大家帮忙看看。生产环境的日志。我看不明白

附件:

附件图标1212yaosuB.txt (64.37 KB)

收起
参与4

查看其它 2 个回答campspirit的回答

campspiritcampspirit技术经理中科软
HMGR0152W信息报出说明这个进程中存在JVM线程调度延迟。

WebSphere Application Server高可用管理器组件中包含线程调度延迟检测逻辑,它会周期性的启动一个线程, 用这个线程去跟踪是否线程已经被分派,是否按照计划运行。默认情况下,延迟检测线程每30秒钟运行一次, 如果超过计划5秒钟没有运行就会在日志中记录一条HMGR0152W消息。这条消息显示了延迟的时间或者与该线程期望得到CPU和实际得到CPU的时间差。

HMGR0152W甚至可能在CPU资源可用的情况下报出。有很多原因可能导致这个调度线程不能以适时的方式获得CPU.下面是一些常见的原因:

1. 物理内存被过量使用并且产生了分页.

2. 进程的堆大小太小导致垃圾回收频繁或者过长阻塞了其他线程的执行.

3. 系统中运行着太多线程,负载过高可能导致CPU使用过高.
HMGR0152W警告信息试图告诉您出现了一个如果不及时修正可能导致不稳定的情况.您需要分析为什么调度线程发生了延迟,需要采取哪些措施.下面是一些常用的解决方法:
1. 增加物理内存防止分页.
2. 优化JVM堆内存配置,从而优化垃圾回收.
3. 降低系统的整体负载到一个可以接受的值.
如果HMGR0152W信息不是经常报出,并且从报出的消息看延迟很短(例如小于20秒), 通常不会有其他问题发生,这个时候这个消息可以被忽略.

高可用管理线程调度延迟检测可以通过配置下面两个定制属性中的一个来实现:
1. IBM_CS_THREAD_SCHED_DETECT_PERIOD 参数决定延迟检测线程多长时间运行一次.默认值是30秒.
2. IBM_CS_THREAD_SCHED_DETECT_ERROR 参数决定多长时间的延迟需要被用这个警告信息记录在日志中.

这些属性辖域在核心组上,您可以按照如下方法配置:
1. 在管理控制台中, 点击服务器 > 核心组 > 核心组设置, 然后选择核心组名字.
2. 在其它属性下, 点击定制属性 > 新建.
3. 输入属性名和值.
4. 保存配置.
5. 如果是网络部署环境, 请注意同步所有节点.
6. 重新启动所有的服务器是该配置在该服务器上生效.

虽然我们可以用上面两个属性增加线程调度检测时间, 但是不建议通过它们使HMGR0152W警告消息完全不再报出. 这个方法只是用于优化系统消除线程调度延迟.
互联网服务 · 2011-12-13
浏览3952

回答者

campspirit
技术经理中科软
擅长领域: 服务器系统运维系统管理

campspirit 最近回答过的问题

回答状态

  • 发布时间:2011-12-13
  • 关注会员:1 人
  • 回答浏览:3952
  • X社区推广