问题排查相关

149 阅读1分钟

虚拟机相关

CPU飙高

jstack配合top命令分析CPU飙高、程序死锁问题

  1. 现象 通过监控预警发现机器的CPU使用率居高不下
  2. 定位步骤
    1. 先查找出cpu使用率很高的线程
      1. top:查找当前cpu使用率较高的进程,得到进程id(PID)
      2. top -Hp 查找当前进程下,cpu使用较高的线程,得到线程id
      3. 或者使用jps,可以直接查看java的进程id
    2. jstack:打印线程快照 jstack
    3. jstat:虚拟机各种运行状态信息

线程长时间停顿

平时碰到系统CPU飙高和频繁GC,你会怎么排查?

  1. 死锁
  2. 死循环
  3. 请求外部资源导致等待

频繁fullgc

  1. gc触发的时机
    1. minor gc:
      1. 空间(eden+1 survivor)不足
    2. full gc:
      1. 老年代空间不足
        1. 配置不合理
        2. 内存泄露:JAVA内存泄露的原因及解决
      2. 手动执行System.gc(),建议系统执行gc,但可能不会立刻执行
      3. 执行了jmap -histo:live pid命令,这个会立即触发fullgc
      4. minor gc引发
      5. meta space空间不足
      6. 使用CMS垃圾收集器产生的问题和解决方案

高并发相关

线程池

存储相关

数据库连接池不够

慢SQL

Limit 20000问题

死锁问题