上周帮客户排查服务器,发现一个配置错误让网站响应时间从2.1s降到0.8s——这个案例太典型了。上篇文章发了理论部分,今天就把具体操作讲透,都是我踩过的坑。文章链接:服务器性能优化完全指南
高性价比服务器推荐
先看懂服务器状态
别急着改配置,先搞清楚问题在哪。Linux系统自带一堆查看工具,我最常用的是这几个:
top命令看CPU和内存占用情况。这个命令能显示系统负载、进程占用资源,哪些进程在拖后腿一目了然。uptime查看系统运行时长和负载平均值,如果负载数高于CPU核心数,说明有进程在排队等待。
free -h看内存使用,-h参数让人更易读。关键看available列,这是真正可用的内存。sar命令更强大,能看历史数据,比如查看昨天的CPU使用曲线,找出高峰时段。
上个月帮朋友排查一个卡顿的服务器,top显示CPU使用率才30%,但负载是8,说明有进程在等待IO。后来发现是磁盘IO瓶颈,换了SSD后世界清净了。
CPU调优那些事儿
服务器CPU经常100%?先找元凶。ps命令按CPU排序,能看到哪个进程最耗CPU。
优化前后对比:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 单核CPU峰值 | 100% | 60% |
| 整体CPU使用率 | 85% | 45% |
| 请求响应时间 | 2.1s | 0.8s |
| QPS | 150 | 380 |
去年有个客户网站一到晚上就卡,mpstat显示下班后CPU使用率飙升。查了一周发现是定时任务在跑数据同步,正好赶上用户高峰期。调整了任务时间后问题解决。
内存优化实战
内存不够用是最常见的问题。用free命令查看:
优化前后对比:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| Swap使用 | 512MB | 0MB |
| 内存available | 7.8GB | 10.2GB |
| 页面交换频率 | 每分钟50次 | 0次 |
磁盘IO优化
机械硬盘随机读写是硬伤,SSD可以解决大部分问题。但即使SSD,也要优化。
优化前后对比:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 磁盘使用率 | 100% | 45% |
| await响应时间 | 200ms | 15ms |
| IOPS | 200 | 1200 |
网络优化
TIME_WAIT连接过多会占用端口资源,可以通过修改内核参数解决。
之前做活动压测,并发一上来服务器就挂,后来加了限流配置,活动期间稳稳的。
真实案例:一次惊心动魄的排查
说说前年双十一的事。凌晨3点,运维电话响了,说服务器全挂了。赶紧远程上去看,top显示CPU 100%,ssh输入命令都卡。
问题很明显:Oracle一个进程吃掉了80%内存还不够,一直往Swap写,Swap也满了导致系统崩溃。
排查过程:1. 先用kill -STOP暂停那个疯狂的进程 2. free -h确认内存情况 3. ps aux --sort=-%rss找出问题进程 4. 调整Oracle的SGA参数,重启服务
结果验证:重启后内存使用稳定在12GB,Swap完全没用,双十一当天平稳度过。
你们现在用的什么监控方案?服务器有多少台?如果是多台的话,后面可以聊聊zabbix或者prometheus自动化监控的搭建。