Linux性能优化是观测→定位→调优→验证的闭环过程,需先用top、vmstat、iostat、free、netstat等命令筛查瓶颈,再用perf、iotop、tcpdump等深入分析,针对性调整应用、文件系统和内核参数,并通过压测与监控验证效果。

Linux性能优化不是堆配置、换硬件,而是从观测到定位、再到调优的闭环过程。关键在“先看清再动手”,避免盲目改参数反而引发新问题。
一、明确瓶颈在哪:用基础命令快速筛查
别急着调内核参数,先用5个命令摸清系统当前负载特征:
- top / htop:看CPU使用率、运行队列长度(load average)、内存占用、哪个进程吃资源最狠
- vmstat 1:每秒刷新,重点看 r(就绪进程数) 是否持续 > CPU核数,si/so(swap交换) 是否非零,bi/bo(磁盘I/O) 是否突增
- iostat -x 1:查磁盘瓶颈,关注 %util(接近100%说明设备饱和)、await(平均等待毫秒,>10ms需警惕)、r_await/w_await 分离读写延迟
- free -h:看 available 是否充足,buff/cache 占比高属正常,但 swap used 持续增长说明物理内存真不够
- netstat -s 或 ss -s:查网络异常,如 packet receive errors、retransmits 明显上升,可能网卡或TCP栈出问题
二、深入定位热点:按场景选择精准工具
确认大方向后,用更细粒度工具锁定根因:
- CPU高?用 perf top 看函数级热点,或 pidstat -u 1 查单进程CPU时间分布
- 内存慢?用 slabtop 查内核对象分配,cat /proc/meminfo 看PageCache、SReclaimable等细节,配合 memleak(bpftrace脚本)找用户态泄漏
- 磁盘慢?用 iotop 找IO大户,blktrace + blkparse 分析IO路径延迟,确认是应用随机读多、还是存储层响应慢
- 网络卡?用 tcpdump 抓包看重传/乱序,bcc工具集里的 tcplife、tcpretrans 直接统计连接生命周期和重传行为
三、有针对性地调优:不碰通用参数,只改关键项
多数场景无需动sysctl.conf全局参数。优先做这几类调整:
标签: linux redis go app 工具 栈 ai ios switch 热点 shell脚本 内存占用 red
还木有评论哦,快来抢沙发吧~