java面试-linux命令

 一、生产环境服务器变慢,谈谈你的诊断思路。

整机:top [看CPU、内存 load average(1分钟、5分钟、15分钟系统的平均负载值  三值相加/3*100% > 60%  系统负担压力大]
uptime:系统性能命令的精简版
查看CPU:vmstat -n 2 3
[procs r:运行和等待CPU时间片的进程数 不能超过总核数的2倍 b:等待资源的进程数]
[CPU us:用户进程消耗CPU时间百分比 sy:内核进程消耗CPU时间百分比 us+sy>80% 存在CPU不足]

mpstat -P ALL 2:查看所有CPU核信息 【idle代表CPU空闲值,越高越好】
ps -ef|grep java
pidstat -u 1 -p 进程编号:每个进程使用CPU的用量分解信息
查看内存:free  [free -m]
[free/total>70% 内存充足 free/total<20% 内存不足]

pidstat -p 进程编号 -r 采用间隔秒数

查看磁盘:df -h [查看磁盘剩余空间数]

磁盘IO:iostat -xdk 2 3
[一秒中有百分几的时间用于IO操作 接近100%磁盘带宽跑满,需要优化程序或增加磁盘]
       pidstat -p 进程编号 -d 采用间隔秒数
网络IO:ifstat [默认本地没有,需下载]

二、生产环境出现CPU占用过高,谈谈你的分析思路和定位

 思路:结合Linux和JDK命令一起分析

1、先用top命令找出CPU占比最高的
2、ps -ef|grep java|grep -v|grep 或者jps -l进一步定位
3、定位到具体线程或代码
ps -mp 进程编号 -o THREAD,tid,time [-m:显示所有线程   -p pid:进程使用CPU的时间    -o:用户自定义格式]
4、将需要的线程ID转换为16进制格式
5、jstack 进程ID

  

猜你喜欢

转载自www.cnblogs.com/wjh123/p/11080617.html