《WebLogic_Server_CPU占用率过高解决办法》.pdf

《WebLogic_Server_CPU占用率过高解决办法》.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《WebLogic_Server_CPU占用率过高解决办法》.pdf

WebLogic Server CPU 占用率过高解决办法 本文由《weblogic中文爱好者论坛》 整理发布。 1 问题描述 系统管理员或用户注意到 WebLogic Server 进程消耗大量的 CPU 资源,并想要了解是哪个方面消耗 了大量 CPU 资源,以及导致出现这种现象的原因。 2 故障排除 请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。 2.1 为什么发生此问题? 发生此问题有许多原因:WebLogic Server 本身、用户创建的线程、不良编码习惯或第三方软件。遗 憾的是,证明在什么地方发生此问题有时候非常困难。本模式尝试通过利用特定操作命令和收集数据 来帮助排除此问题。 2.2 收集高 CPU 占用率的数据 对于有关收集高 CPU 占用率的数据的特定操作信息,请根据您的操作系统执行以下步骤。 重要说明: 这些操作系统的所有信息都基于 Sun JVM。 目前在 JRockit 中还没有办法将 PID 从说明 CPU 占用率的 操作系统命令(prstat、top、pslist 等等)映射到 Thread Dump 中的正确线程。 从 Jrockit 的 70SP4RP2 和 81SP2RP1 以后的版本起,就可实现此映射。 例如,在 Linux 中,Thread Dump 在以后的 版本中将采用如下形式(PID 显示在 Thread Dump 中): ExecuteThread: 20 for queue: default id: 0x00000e80 prio: 5 ACTIVE, DAEMON, GCABLE thread: 0x469b0af0 lastj: 0xac0f19c pt_thr: 237596 pid: 23166 at COM.jrockit.vm.Classes.defineClass0(Native Method)@0x8b4b798 at COM.jrockit.vm.Classes.defineClass(Unknown Source)@0x8b4b8b1 at java.lang.ClassLoader.defineClass(Unknown Source)@0x8b4b46f 在上例中,PID 是 23166,您可以通过 Linux 或任何所在系统上的 top (或任何您需要在操作系统上使 用的特定命令)输出直接关联该 PID。 转换为十六进制号码 备注:为协助您计算在本模式中讨论的十六进制值,您可以在 Shell 脚本中使用下列行将十进制号码转 换为十六进制号码。如果您使用 Unix 操作系统,那么转换会很方便。 dec2hex.sh: printf dec - hex: %d = %x \n ${1} ${1} 用法: $ sh dec2hex.sh 755 dec - hex: 755 = 2f3 Solaris 1. 在 Java 进程中运行 prstat 命令。重复几次这个操作,以便您能够看到一种模式。例如: prstat -L -p PID 1 1 2. 在 Java 进程中运行 pstack 命令以获得从轻量型进程 (LWP) 到 PID(进程 ID)的映射。 示例:pstack 9499 并将输出结果重定向到一个文件。 如果您使用 Solaris 中的常规线程库(即,在 LD_LIBRARY_PATH 中没有 /usr/lib/lwp),LWP 就 不会直接映射到操作系统线程,因此您必须从进程中执行 pstack (所以检查看您是否正在使用替代线程 库)。 3. 经过一段时间后对服务器进行若干 Thread Dump,确保您执行正确的线程。 您可以通过在 Java 进程中执行 kill -3 PID来达到此目的。 4. 将 LWP ID 映射到 Java 线程 ID。 例如,如果上述的 LWP 为“8”,它可以映射到 Java 线程“76”。然后将 76 换算为十六进制值 0x4c。 5. 检查 Thread Dump,找到匹配“nid= 上述标识符/值”的线程。 在本示例中,您找到匹配“nid=0x4c”的线程,而该线程就是正在消耗 CPU 资源的那个线程。 6. 您将需要:

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档