服务器IO异常-Ubuntu14.04【日常工作记录】

客户反映云主机IO异常,导致云主机运行速度非常缓慢。
问题主机共3台,在同一服务器,且服务器内没有其他云主机。
尝试关闭其中一台云主机,IO异常问题仍然存在;
尝试关闭其中两台云主机,IO异常问题仍然存在;
关闭全部云主机,IO异常问题仍然存在;

top命令查看CPU以及内存使用情况,发现无异常;
使用iostat命令监控IO实时数据:
iostat -x 1 #每一秒刷新一次
服务器IO异常-Ubuntu14.04【日常工作记录】
(图片是服务器正常情况下截取的,只做参考)
主要参考三个字段:
await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
%util:在统计时间内所有处理IO时间,除以总共统计时间。
IO异常时,await的值基本保持在三位数,与svctm相差很大,同时%util保持在98%-100%。

联系机房重启服务器,IO异常问题消失,开始进行排查;
首先使用iostat命令确认当前IO是否真的正常
iostat -x 1 #观察一会

查看日志
less /var/log/syslog
发现error字段日志信息:
snmpd[2211]: error on subcontainer 'ia_addr' insert (-1)

经过对错误信息的查询,得到如下结论:
此错误实际上导致内存泄漏,因为容器在“插入”失败时未清除

修复方式:
因为/etc/defaults/snmpd中的默认设置,snmpd会将所有错误报告给syslog。
如果要仅仅记录信息级别,而不调试,按如下修改:
SNMPDOPTS='-LS6d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
TRAPDOPTS='-LS6d -p /var/run/snmptrapd.pid'
(将-Lsd,修改为-LS6d)

修改后重启snmp服务
service snmpd restart

使用iostat查看当前IO情况,确认正常后,依次将三台云主机启动,并观察IO情况。
使用SCRT打开两个窗口,全部远程连接该服务器:
1窗口:iostat -x 1 #监控IO状态
2窗口:tail -f /var/log/syslog #实时观察日志变化
(目的是观察,在修改了snmp的配置后,服务器有没有某些动作会影响IO)

依次打开云主机时发现云主机在刚开启时IO会变高,图下图
服务器IO异常-Ubuntu14.04【日常工作记录】

但await和svctm的差值却较小,因此可判断IO压力不大。
可询问客户云主机间有没有同步或恢复机制。 #经与客户沟通,得知三台云主机间在进行数据库恢复,并且结合await和svctm的值可判断,当前IO无异常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章