1、生产环境服务器变慢,诊断思路和性能评估谈谈?
vmstat -n 2 3
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔单位是秒,第二个参数是采样的次数
- procs
- cpu
查看所有核的CPU信息: mpstat -P ALL 2
每个进程使用cpu的用量分解信息 : pidstat -u 1 -p 进程编号
应用程序可用内存数
- 经验值
查看额外:
pidstat -p 进程号 -r 采样间隔秒数
查看磁盘剩余空闲数
磁盘I/O性能评估
iostat -xdk 2 3
磁盘块设备分布
rkB/s 每秒读取数据量KB;
wkB/s 每秒写入数据量KB;
svctm I/O 请求的平均服务时间,单位毫秒;
await I/O 请求的平均等待时间,单位毫秒;值越小,性能越好;
util 一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘
rkB/s ,wkB/s 根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。
svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好
如果await的值远高于scvtm的值,则表示I/O队列等待太长,需要优化,需要优化程序或更换更快磁盘。
查看额外
pidstat -d 采样间隔秒数 -p 进程号
各个网卡的in,out
观察网络负载情况
程序网络读写是否正常
-程序网络I/O优化
-增加网络I/O带宽
2、假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位
结合Linux和JDK命令一块分析
案例步骤:
(1) 先用top命令找出CPU占比最高的,然后再按shift+p按照CPU排序,找到占用CPU过高的进程的pid
(2) ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序
(3) 定位到具体线程或者代码
①ps -mp 进程 -o THREAD,tid,time | sort -rn
②参数解释 -m 显示所有线程
-p pid进程使用cpu的时间
-o 该参数后是用户自定义格式
sort -rn 排序
或者 top -H -p [进程id] 找到进程中消耗资源最高的线程的id
(4) 将需要的线程ID转换为16进制格式(英文小写格式)
printf "%x\n" 有问题的线程ID
(5) jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
3、对于JDK自带的JVM监控和性能分析工具用过哪些?一般你是怎么用的?
jps(虚拟机进程状况工具)
jinfo(Java配置信息工具)
jmap(内存映像工具)
jstat(统计信息监控工具)
jstack(堆栈异常跟踪工具)
jvisualvm
jconsole
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务