websphere cpu性能问题.docx

上传人:b****0 文档编号:17779425 上传时间:2023-08-03 格式:DOCX 页数:11 大小:21.65KB
下载 相关 举报
websphere cpu性能问题.docx_第1页
第1页 / 共11页
websphere cpu性能问题.docx_第2页
第2页 / 共11页
websphere cpu性能问题.docx_第3页
第3页 / 共11页
websphere cpu性能问题.docx_第4页
第4页 / 共11页
websphere cpu性能问题.docx_第5页
第5页 / 共11页
websphere cpu性能问题.docx_第6页
第6页 / 共11页
websphere cpu性能问题.docx_第7页
第7页 / 共11页
websphere cpu性能问题.docx_第8页
第8页 / 共11页
websphere cpu性能问题.docx_第9页
第9页 / 共11页
websphere cpu性能问题.docx_第10页
第10页 / 共11页
websphere cpu性能问题.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

websphere cpu性能问题.docx

《websphere cpu性能问题.docx》由会员分享,可在线阅读,更多相关《websphere cpu性能问题.docx(11页珍藏版)》请在冰点文库上搜索。

websphere cpu性能问题.docx

webspherecpu性能问题

WAS的异常高CPU占用率

问题描述

系统管理员或用户注意到WebSphereApplicationServer进程消耗大量的CPU资源,并想要了解是哪个方面消耗了大量CPU资源,以及导致出现这种现象的原因。

故障排除

请注意,并非下面所有任务都需要完成。

有些问题仅通过执行几项任务就可以解决。

为什么发生此问题?

发生此问题有许多原因:

WebSphereApplicationServer本身、用户创建的线程、不良编码习惯或第三方软件。

遗憾的是,证明在什么地方发生此问题有时候非常困难。

本模式尝试通过利用特定操作命令和收集数据来帮助排除此问题。

收集高CPU占用率的数据

对于有关收集高CPU占用率的数据的特定操作信息,请根据您的操作系统执行以下步骤。

转换为十六进制号码

备注:

为协助您计算在本模式中讨论的十六进制值,您可以在Shell脚本中使用下列行将十进制号码转换为十六进制号码。

如果您使用Unix操作系统,那么转换会很方便。

dec2hex.sh:

   printf"dec->hex:

 %d=%x\n"${1}${1}

用法:

   $shdec2hex.sh755

   dec->hex:

 755=2f3

AIX

1.执行:

 ps-mp-oTHREAD以查找正在占用CPU的tid。

 

您应当查看“CP”列(表示CPU占用率),看其中哪些线程的此项值比较高并从中挑选一个线程。

2.通过执行以下命令对服务器进行ThreadDump:

kill-3

3.运行:

 dbx-a

4.在dbx中时,运行dbxthread命令(以列出所有线程)。

5.查找与您通过ps-mp-oTHREAD命令获取的TID匹配的行。

 该行中的号码应当采用“$t”格式,其中“NUM”是一个号码。

6.在dbx中时,运行dbx命令thinfo(此TID来自上一步骤,该步骤在$t后面列出号码)以获取关于该线程的信息。

7.从第3步骤的输出中,在“general”下查找“pthread_t”,并记录该十六进制号码。

8.非常重要说明:

在dbx提示符下,您需要在完成操作时在dbx命令行键入“detach”,否则,如果您在连接到进程时只要一退出,dbx将终止该进程!

9.记下“p_thread_t”输出中的十六进制值,并在ThreadDump中搜索其中哪个线程的“nativeID”等于该值。

 

这将为您揭示造成高CPU占用率问题的线程。

下面是AIX系统中上述进程的一个示例:

1、ps-mp250076-oTHREAD将显示以下内容:

USER   PID  PPID    TIDST CPPRISC   WCHAN       F    TTBNDCOMMAND

   usera250076217266      -A  38 6072       *  242011 pts/0  -/WebSphere/jdk130/...

      -     -     - 315593Z   0 97 1       -  c00007     -  --

      -     -     - 344305S   0 60 1f1000089c020e200  400400     -  --

      -     -     - 499769S   0 60 1f1000089c0213a00  400400     -  --

      -     -     - 540699S   0 60 1f100008790008440 8410400     -  --

      -     -     - 544789S   0 60 1f100008790008540 8410400     -  --

      -     -     - 548883S   0 60 1f100008790008640 8410400     -  --

      -     -     - 552979S   0 60 1f100008790008740 8410400     -  --

      -     -     - 565283Z   0 60 1       -  c00007     -  --

      -     -     - 585783S   0 60 1f100008790008f40 8410400     -  --

      -     -     - 589865Z   0 80 1       -  c00007     -  --

      -     -     - 593959S   1 60 1f100008790009140 8410400     -  --

      -     -     - 610365S   0 60 1f100008790009540 8410400     -  --

      -     -     - 614453S   0 60 1f100008790009640 8410400     -  --

      -     -     - 618547S   0 60 1f100008790009740 8410400     -  --

      -     -     - 622645S   0 60 1f100008790009840 8410400     -  --

      -     -     - 626743S   0 60 1f100008790009940 8410400     -  --

      -     -     - 630841S   0 60 1f100008790009a40 8410400     -  --

      -     -     - 634941S   0 60 1f100008790009b40 8410400     -  --

      -     -     - 639037S   0 60 1f100008790009c40 8410400     -  --

      -     -     - 643135S   0 60 1f100008790009d40 8410400     -  --

      -     -     - 647233S   0 60 1f100008790009e40 8410400     -  --

      -     -     - 651331S   0 60 1f100008790009f40 8410400     -  --

      -     -     - 655429S   0 60 1f10000879000a040 8410400     -  --

      -     -     - 659527S   0 60 1f10000879000a140 8410400     -  --

      -     -     - 663625S   0 60 1f10000879000a240 8410400     -  --

      -     -     - 667723S  37 78 1f1000089c020f150  400400     -  --

      -     -     - 671821S   0 60 1f10000879000a440 8410400     -  --

      -     -     - 675919S   0 60 1       -  418400     -  --

      -     -     - 680017S   0 60 1f10000879000a640 8410400     -  --

      -     -     - 684115S   0 60 1f10000879000a740 8410400     -  --

      -     -     - 688213S   0 60 1f10000879000a840 8410400     -  --

      -     -     - 692311S   0 60 1f10000879000a940 8410400     -  --

      -     -     - 696409S   0 60 1f10000879000aa40 8410400     -  --

      -     -     - 712801S   0 60 1f10000879000ae40 8410400     -  --

      -     -     - 716899S   0 60 1f10000879000af40 8410400     -  --

    ……

2.通过kill-3产生该WAS_JAVA_PID的ThreadDump

3.检查ps-mp-oTHREAD命令所输出的信息。

注意,TID"667723"在CP列中有一个高值(它达到“37”,而其它TID几乎为0)。

4.运行dbx-a250076以连接到WebSphereApplicationServer进程。

5.运行thread命令以列出所有本地线程。

下面只显示相关线程的一个代码片断:

thread state-k    wchan   state-u   k-tid  modeheldscopefunction

 .....

 $t15   wait     0xf10000879000a140blocked  659527    k  no  sys _event_sleep

 $t16   wait     0xf10000879000a240blocked  663625    k  no  sys _event_sleep

 $t17   run                 running  667723    k  no  sys JVM_Send         

 $t18   wait     0xf10000879000a440blocked  671821    k  no  sys _event_sleep

 $t19   wait                running  675919    k  no  sys poll             

 $t20   wait     0xf10000879000a640blocked  680017    k  no  sys _event_sleep

 .....

6.运行thinfo17命令以获取关于该本地线程的必要信息:

(dbx)thinfo17

    thread state-k    wchan   state-u   k-tid  modeheldscopefunction

    $t17   run                 running  667723    k  no  sys JVM_Send

        general:

           pthreadaddr=0x3ea55c68        size        =0x244

           vpaddr     =0x3e69e5e0        size        =0x2a8

           threaderrno=2

           startpc    =0x300408b0

           joinable    =no

           pthread_t   =1011

        scheduler:

           kernel      =

           user        =1(other)

        event:

           event       =0x0

           cancel      =enabled,deferred,notpending

        stackstorage:

           base        =0x3ea15000        size        =0x40000

           limit       =0x3ea55c68

           sp          =0x3ea55054

7.非常重要说明:

在dbx提示符下运行“detach”以从WebSphereApplicationServerJava进程中分离。

警告:

☆☆☆☆☆!

8.记下上述“pthread_t”的数值,并用来查找WebSphereApplicationServer进程ThreadDump中的正确线程。

9.从早期进行的ThreadDump中,您可以将十六进制号码“1011”与ThreadDump中在“nativeID”之后的号码进行匹配。

下面是匹配此十六进制号码并造成高CPU占用率问题的线程示例:

3XMTHREADINFO"Servlet.Engine.Transports:

915"(TID:

0x34B82C78,sys_thread_t:

0x778F7670,state:

MW,nativeID:

0x1011)prio=5

4XESTACKTRACEatcom.henry.util.JSONWriter.putValue(JSONWriter.java(CompiledCode))

4XESTACKTRACEatcom.henry.util.JSONWriter.putNextValue(JSONWriter.java(InlinedCompiledCode))

4XESTACKTRACEatperson._FPT_5F_I_5F_0002_5F_1Pay_jsp_0.toAccountList2JsonArray(_FPT_5F_I_5F_0002_5F_1Pay_jsp_0.java(CompiledCode))

4XESTACKTRACEatperson._FPT_5F_I_5F_0002_5F_1Pay_jsp_0._jspService(_FPT_5F_I_5F_0002_5F_1Pay_jsp_0.java:

392)

4XESTACKTRACEatorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java(CompiledCode))

4XESTACKTRACEatjavax.servlet.http.HttpServlet.service(HttpServlet.java(CompiledCode))

4XESTACKTRACEatorg.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java(CompiledCode))

4XESTACKTRACEatorg.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java(CompiledCode))

4XESTACKTRACEatorg.apache.jasper.runtime.JspServlet.service(JspServlet.java(CompiledCode))

4XESTACKTRACEatjavax.servlet.http.HttpServlet.service(HttpServlet.java(CompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.StrictServletInstance.doService(ServletManager.java(CompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(StrictLifecycleServlet.java(CompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.ServicingServletState.service(StrictLifecycleServlet.java(CompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.StrictLifecycleServlet.service(StrictLifecycleServlet.java(InlinedCompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.ServletInstance.service(ServletManager.java(CompiledCode))

4XESTACKTRACEatcom.ibm.servlet.engine.webapp.ValidServletReferenceState.dispatch(ServletManager.java(CompiledCode))

Windows

使用pslist

您可以在Windows中使用pslist并获取java进程的线程详细信息。

 pslist可从以下网址得到:

1.运行pslist-d并将输出结果重定向到一个文件。

 

2.重复几次这个操作,以便您能够看到一种模式。

您将看到“用户时间”和“内核时间”不断增加。

3.在若干次迭代后对WAS服务器进行ThreadDump。

4.记下步骤1中看起来正在增加的线程ID号,将十进制值改为十六进制值(您可以使用Windows中的计算功能)。

5.根据“nid=0x<步骤3的十六进制值>”检查ThreadDump,直到您找到出现问题的线程。

使用ProcessExplorer

您还可以使用Systinternals提供的ProcessExplorer  

该工具直观动态显示CPU占用率。

 由于ProcessExplorer没有记录功能或历史记录,您必须监视该程序并记录占用几乎全部CPU资源的Java进程的线程ID。

 若要通过ProcessExplorer达到上述目的:

1.查找java进程,然后右键单击并选择属性。

2.单击“Threads”选项卡以显示与此java进程关联的所有线程。

3.您可以单击以“MSVCRT.dll+<一些十六进制偏移量>”形式列出的其中一个线程。

您可以看到在下面窗格中列出的“ThreadID”。

4.观察哪一个线程占用最多CPU资源。

5.进行WAS服务器的ThreadDump。

6.记下步骤4中看起来正在占用CPU的线程ID号,将十进制值改为十六进制值(您可以使用Windows中的计算功能)。

7.根据“nativeID=0x<十六进制值>”检查ThreadDump,直到您找到出现问题的线程。

下面是仅使用pslist和ThreadDump的步骤示例:

1.运行pslist-d172

java1720:

TidPri   Cswtch           State    UserTime  KernelTime  ElapsedTime

1520  8     9705    Wait:

UserReq 0:

00:

23.734  0:

00:

01.772   0:

04:

55.264

1968  9     2233    Wait:

UserReq 0:

00:

04.606  0:

00:

00.040   0:

04:

54.874

1748 15      146    Wait:

UserReq 0:

00:

00.010  0:

00:

00.010   0:

04:

54.863

1744 11       62    Wait:

UserReq 0:

00:

00.010  0:

00:

00.000   0:

04:

54.853

1420 15        3    Wait:

UserReq 0:

00:

00.000  0:

00:

00.000   0:

04:

54.563

1856 15        7    Wait:

UserReq 0:

00:

00.000  0:

00:

00.000   0:

04:

54.563

1860  9   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2