Linux 服务器变慢诊断思路

收集整理文章

整机:top

load average:系统负载均衡,代表系统1分钟5分钟15分钟平均负载值,若三个值相加除以三乘以100%若高于60%则系统运行压力大。也可以用uptime命令查看系统性能精简信息
在top下不停按键盘1 会查看各cup运行状态
Linux 服务器变慢诊断思路

CPU:vmstat

Linux 服务器变慢诊断思路
查看所有cpu核信息:mpstat -P ALL 2
Linux 服务器变慢诊断思路
查看每个进程使用cpu的用量分解信息:pidstat -u 1 -p 进程编号 Linux 服务器变慢诊断思路

内存:free

命令:free -m
Linux 服务器变慢诊断思路

  • 经验值
    应用程序可用内存/系统物理内存>70% 内存充足
    应用程序可用内存/系统物理内存<20% 内存不足,需要增加内存
    20%<应用程序可用内存/系统物理内存<70% 内存基本够用
    查看进程内存使用:pidstat -p 进程号 -r 采样间隔秒数
    Linux 服务器变慢诊断思路

硬盘:df

查看硬盘使用情况:df -h
Linux 服务器变慢诊断思路

磁盘IO:iostat

Linux 服务器变慢诊断思路

进程磁盘io使用情况: pidstat - 进程号 -r 采样间隔秒数
Linux 服务器变慢诊断思路

网络IO:ifstat

Linux 服务器变慢诊断思路

java程序cup过高定位思路

1.先用top命令找出cpu占比最高的进程

2.定位到具体的线程或代码

ps-mp 进程编号 -o THREAD,tid,time(-m显示所有线程;-p pid 进程使用cpu时间;-o 用户自定义格式)
Linux 服务器变慢诊断思路

3.将需要的线程ID转换为16进制格式(英文小写) printf "%x\n" 进程id

4.jstack 定位到具体代码jstack 进程ID | grep tid(16进制线程id小写英文) -A60