性能问题定位

查看系统版本
• cat /etc/os-release
• cat /etc/redhat-release
• rpm -q centos-release

系统信息
• /proc虚拟目录,是内存的映射
• 内核版本 cat /proc/version | uname -a
• cat /proc/cpuinfo 线上是4CPU 8Core
• cat /proc/meminfo free -m 线上是8G
• df -h 线上是40G

CPU占用高

  • top 找到异常java进程的pid

  • top -Hp pid --- 查看进程中CPU或着MEM占用较高的线程

  • printf "%x\n" 42746 ---线程转成十六进制

  • jstack 25720 | less --- 进程的堆栈信息,找线程(十六进制)

  • jmap -histo 25720 | head -n 100 查看实例最多的可疑对象

内存占用高

  • jmap -heap 21957 -- 打印heap的概要信息,GC使用的算法,heap的配置及使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况
  • jmap -histo 21957 | head -n 100 -- 打印堆的对象统计,包括对象数、内存大小等等
  • jmap -histo:live 21957 | head -n 100 -- 会触发一次FGC后,收集统计信息

检查项

  • gc:
    jstat -gcutil 25720 1000 -- gc情况

  • io:
    iostat -d -x -k 1 10

  • 与数据库连接:
    pid: netstat -anp | grep 21643
    port: netstat -anp | grep 3306

响应慢

线上问题

  • CPU占用过高
    耗cpu的代码
    线程空转
  • MEM占用过高
  • java进程挂掉了
  • 数据库CPU告警
    没有索引惹的祸

线上操作使用命令要小心

  • jmap,jstack等
  • vi 大文件
    vi 1个多G的日志文件,刚打开时


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一句话总结:从问题现象为入口,归结为3类问题进行定位分析:内存满、CPU高、线程阻塞。 首先先介绍下jvisual...
    Java架构_师阅读 259评论 0 2
  • 参考自 http://techblog.youdao.com/?p=961 在分析具体故障,先介绍一下几种常用的工...
    抓兔子的猫阅读 6,007评论 1 27
  • Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频...
    Rick617阅读 7,373评论 1 9
  • linux java jstack看java线程细节 top看线程java列表 mysql 查看当前连接数 (my...
    金琥阅读 355评论 0 1
  • 去年我就在我的诗里 写过了 “这些不知名的小花 带着淡淡的香 从行道树上簌簌的落下来 有的落在人行道上 有的落在非...
    吻章阅读 207评论 2 0