服务器 CPU 使用率过高,通常是性能瓶颈、代码问题或资源配置不合理导致的。下面我从排查思路 → 常见原因 → 调优手段三个层面给你一个实用指南。
top
或
htop
关注:
%us:用户态(应用代码)%sy:系统态(内核、锁、IO)%wa:IO 等待load average 是否远高于 CPU 核数top -c
或
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head
top -Hp <pid>
记下高 CPU 的 线程 ID(十进制)
转成十六进制:
printf "%x\n" <tid>
jstack <pid> > jstack.log
在日志里搜索线程 ID(十六进制)
vmstat 1
pidstat -u 1 -p <pid>
perf top
现象
解决
现象
%sy 高BLOCKED解决
ConcurrentHashMapsynchronized 大方法现象
%us + %sy 同时高排查
jstat -gcutil <pid> 1000
调优
现象
vmstat 1
# cs 很大
解决
top
%wa 很高
解决
现象
解决
taskset -c 0,1,2 java -jar app.jar
sysctl -w net.core.somaxconn=65535
systemctl list-unit-files | grep enabled
✅ 先定位,再优化
✅ 不要盲调参数
✅ 一次只改一个变量
✅ 用压测验证效果
如果你愿意,可以告诉我:
%us 高还是 %sy 高我可以给你更针对性的调优方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。