一.CPU,Mem过高怎么办 --这是个开始

本身是名Java开发,在做了一段大数据的工作后,猛然间想对Java做个总结。

从未写过技术博客,一时不知如何开始,思虑后,暂且以自己喜爱的方式来开篇。

工作中遇到过CPU或内存过高的问题,解决步骤:

  1. 通过top命令查看,得到pid.
  2. 通过ps -mp <pid> -o THREAD,tid,time,pid 命令,拿到tid.
  3. 使用jdk自动的工具,jstack -l 15605 > stack.txt,得到此时的线程状态。(Stack文件描述了当时每个线程的状态,这是一个很强大的知识点,后面慢慢细说。)
  4. 将步骤2中得cpu过高的tid,由十进制转换为16进制(如果是windows server也可以通过在线的一些工具进行转换。)
  5. 使用命令grep "3cfb" stack.txt -A30在生成的stack文件中查找,可以看出当前的程序是由于进行GC导致的cpu过高。
  6. JVM内存占满会触发GC(这是个知识点,GC的触发机制,下节在细说),那我们就用jdk自带的工具查看下此时的内存情况。jmap -dump:file=heap.dump,format=b <pid>
  7. 通过jdk自带工具,jhat -JXmx1G heap.dump解析dump文件。(生成的dump文件一般会很大,所以需要大内存的PC去解析。另外,MAT(MemoryAnalyzer Tool)工具是eclipse的一个插件,也可以分析dump文件)

  8. Jhat命令在7000端口自动部署了web,可以通过serverIp:7000访问

这是解决问题的的一个具体方法,这里涉及到了很多知识点,我准备依此为据,将知识点串起来。下次写GC相关的一些东西。
              

转载于:https://www.cnblogs.com/seven-2017/p/7231001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值