b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java进程的CPU使用率异常高(2)

电脑杂谈  发布时间:2020-05-12 05:03:24  来源:网络整理

================================================ ==== ===================

2. 运行pstack命令.

示例: pstack 9499并将输出重定向到文件.

如果您在Solaris中使用常规线程库(即LD_LIBRARY_PATH中没有/ usr / lib / lwp),

LWP不会直接映射到操作系统线程,因此您必须从进程中执行pstack(因此请检查是否正在使用备用线程库).

上面的示例显示“ java / 8”进程位于prstat的顶部.

3. 在pstack的输出中检查“ lwp#8”.

您会发现,“ lwp#8”从pstack输出映射到“线程#76”,如下所示.

================================================ ==== =================

----------------- lwp#8 /线程#76 --------------------

ff29d190民意调查(e2e81548、0,bb8)

ff24d154 select(0,0,0,e2e81548,ff2bf1b4,e2e81548)+ 348

ff36b134选择(0,bb8,7fffffff,fe4c8000,0,bb8)+ 34

fe0f62e4 __1cCosFsleep6FpnGThread_xl_i_(0,bb8,fe4c8000,1,0,1e2fd8)+ 234

fe23f050 JVM_Sleep(2,0,bb8,fe4de978,fe4c8000,1e2fd8)+ 22c

fe5324e8 __1cMStubRoutinesG_code1_(e2e819d8,e2e81c10,a,f6cb5000、4,e2e818f0)+ 3ec

fe0cbe94 __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_(e2e81c08,fe4c8000,e2e81b54、1e2fd8、8e764,e2e81c10)+308

fe1f6dbc __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandlee81c08,e2e81b54)+ 150pnGThread__v_(f6cb64b8,e2e81b40,e2e81b44,fe4c8000,e2d8)+ 60e_5pnGThread__v_(e2e81c08,e2e81c04,e2e81c00,e2e81bf4,e2e81bec,1e2f8000,e2e81d10,1E,E)+ 120FpnKJavaThread_pnGThread__v_(f6817ff8,1e2fd8,fe4c

7fd70)+ 3d8cKJavaThreadDrun6M_v_(e2e02000,fe4d3e34,fe4c8000、7fd70、1e2fd8,

fe213ec8 _start(fe4c8000,fe625d10,0,5,1,fe401000)+ 20

ff36b728 _thread_start(1e2fd8,0,0,0,0,0)+ 40

================================================ ==== =====================

4. 通过在Java进程中执行以下命令来对服务器进行线程转储:

杀死-3 .

5. 由于lwp#8映射到线程#76,因此您可以将76转换为十六进制值4c.

win10电脑cpu占用过高怎么办_java程序占用cpu过高_java程序占用cpu过高

此值映射到JVM线程转储中的nid = 0x4c:

================================================ ==== ================

“ Thread-6” prio = 5 tid = 0x1e2fd8 nid = 0x4c等待监视器[0x​​e2e81000..0xe2e819d8]

在java.lang.Thread.sleep(本机方法)

在weblogic.management.deploy.GenericAppPoller.run(GenericAppPoller.java:139)

================================================ ==== ======================

在此示例中,使用最多CPU资源的线程实际上正在休眠. 应用程序轮询程序在以开发模式启动的服务器上运行.

由于它每30秒运行一次,因此显然无法及时捕获线程转储以了解该线程中的活动.

理想情况下,所有三个步骤都应快速且连续地完成,以尽可能快地捕获数据. 可以使用类似于以下内容的简单shell脚本来完成此操作.

================================================ ==== =========================

#

#接受一个参数(WLS进程的PID)并循环3次.

#这会将prstat信息附加到名为dump_high_cpu.txt的文件中.

#线程转储信息将在重定向stdout的文件中或在屏幕上显示.

#

用于1 2 3中的循环数

prstat -L -p $ 1 1 1 >> dump_high_cpu.txt

pstack $ 1 >> dump_high_cpu.txt

杀死-3 $ 1

echo“ prstat,pstack和线程转储完成. #” $ loopnum

睡觉1

回声“睡着了. ”

完成

================================================ ==== ====================

6. 然后,您可以检查线程以确定它正在执行什么任务以及是否存在问题.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>> >>>>>>>>>>>>>>>>

AIX

>>>>>>>>>>>>>>>>>>>>

1. 执行: ps -mp -o THREAD查找正在使用CPU的消息.

您应检查“ CP”列(指示CPU使用情况),以查看这些线程中哪个具有较高的值,然后选择一个线程.

2. 通过执行以下命令来线程转储服务器:

杀死-3

3. 运行: dbx -a

4. 在dbx中,运行dbx thread命令(列出所有线程).

5. 找到与ps -mp

此行中的数字应采用“ $ t ”格式,其中“ NUM”是数字.

6. 在dbx中,运行dbx命令info (此TID来自上一步,此步骤列出$ t 之后的数字)以获取有关线程的信息.

7. 在步骤3的输出中,在“常规”下找到“ pthread_t”并记录十六进制数.

8. 非常重要的注意事项: 完成后,在dbx提示符下,需要在dbx命令行中键入“ detach”,否则,如果仅在连接到进程时退出,则dbx将终止该进程!

9. 在“ p_thread_t”的输出中记下十六进制值,并搜索线程的“本机ID”等于该值的“线程转储”.

这将揭示导致CPU使用率高的问题的线程.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-207043-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 长孙铸
      长孙铸

      先是中国进入美国十二海里

    • 齐襄王田法章
      齐襄王田法章

      来宣示霸权的美国军舰

    热点图片
    拼命载入中...