最近线上一组服务器玩家反馈响应缓慢,记录下排查过程。
1、使用top命令查看服务器负载情况,
top - 15:59:37 up 26 days, 3:42, 6 users, load average: 2.98, 2.74, 2.70
Tasks: 180 total, 1 running, 167 sleeping, 12 stopped, 0 zombie
Cpu(s): 8.1%us, 2.4%sy, 0.0%ni, 65.7%id, 23.6%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 32878812k total, 28351052k used, 4527760k free, 173000k buffers
Swap: 8388600k total, 0k used, 8388600k free, 17459308k cached
结论:貌似负载不高
2、进入mysql查看数据库状态
mysql> status;
Threads: 82 Questions: 9865194 Slow queries: 113 Opens: 162733 Flush tables: 1 Open tables: 64 Queries per second avg: 29.099
结论:状态也还算正常
3、检查服务器日志发现,数据库访问中简单的查询操作有时候需要1s以上
结论:数据库查询缓慢影响游戏响应
4、再次使用top观察
top - 16:15:06 up 26 days, 3:58, 6 users, load average: 3.05, 3.10, 2.83
Tasks: 180 total, 1 running, 163 sleeping, 16 stopped, 0 zombie
Cpu(s): 4.5%us, 2.3%sy, 0.0%ni, 60.1%id, 33.0%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 32878812k total, 28360500k used, 4518312k free, 173000k buffers
Swap: 8388600k total, 0k used, 8388600k free, 17468564k cached
发现33.0%wa,而且几乎保持在30以上,而IO等待所占用的CPU时间高过30%时则IO压力高
结论:IO压力高
5、使用用iostat -x 1 10
avg-cpu: %user %nice %system %iowait %steal %idle
6.36 0.00 2.44 37.65 0.00 53.55
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 177.00 0.00 45.00 0.00 1600.00 35.56 14.33 238.09 22.20 99.90
avg-cpu: %user %nice %system %iowait %steal %idle
5.15 0.00 1.96 37.99 0.00 54.90
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 242.00 0.00 46.00 0.00 2408.00 52.35 8.19 241.35 21.70 99.80
avg-cpu: %user %nice %system %iowait %steal %idle
4.62 0.00 2.68 37.23 0.00 55.47
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 748.00 0.00 75.00 0.00 5920.00 78.93 8.10 116.77 13.33 100.00
avg-cpu: %user %nice %system %iowait %steal %idle
3.43 0.00 1.72 33.58 0.00 61.27
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 192.00 0.00 33.00 0.00 1512.00 45.82 29.35 304.85 30.30 100.00
发现%util 100.10 %idle 61.27
%util 数次100%,说明产生的I/O请求太多,I/O系统已经满负载,idle小于70% IO压力较大
结论:IO满负载,压力较大
6、使用iotop命令查看IO负载状态
显示读写速度可到5M/S
29807 be/4 mysql[3;35H86.52 K[3;53H58.59 % mysqld
结论:mysqld进程IO频繁且响应时间比较慢
7、cat /proc/cpuinfo发现服务器为双核四线程,
cpu cores : 2
cpu MHz : 1600.306
结论:cpu主频较低,需提升CPU配置