Linux下系统或服务排障的最佳实践
2012-05-17 23:40:10 来源:我爱运维网 评论:0 点击:
一、故障表现。首先一个应用或系统不正常,会表现在:1、前端应用/网页显示不正常,出错5XX,4XX或其他错误信息或慢或出不来;2、当前端端...
一、故障表现。首先一个应用或系统不正常,会表现在:
1、 前端应用/网页显示不正常,出错5XX,4XX或其他错误信息或慢或出不来;
2、 当前端端应用/网页暂时显示正常,但监控系统报警:如负载过高,CPU繁忙,系统占用比率过高;内存缺少,OOM(Out Of Memory),Swap使用过多等;磁盘空间不足,IO利用率过高;进程数过多,死锁;数据库慢查询过多,session\processes过多;流量过高,异常增减,断开;系统日志(dmesg或/var/log/message)报错;应用日志报错(各种错误,如4XX,5XX;或原来正常的接口现在无法访问;无法解析;响应时间过长….);。。。。
3、系统时而正常,时而不正常,或者之前正确结果,但突然不正确,或者某地用户出问题,但本地正常。
二、主要的原因:
1、 各类新版本发布、变更配置引起。如新版本配置不正确;iptables; DNS设置;接口调用发生变化等。【所有变更务必进行记录,以供查询】
2、 用户行为变化(如进行商业推广,接口加载变化),请求量大增。系统容量不足,如内核参数设置过小,资源过少。带宽不够;数据库慢。
3、 应用程序的BUG。
4、 运维人为错误的修改、配置。如修改密码,增加定时任务,脚本。
5、 网络或硬件故障。如交换机故障,网线故障(千兆变百兆),网卡驱动;磁盘故障、主板故障等。
6、 所依赖的接口或服务挂起(如DNS,后端接口).
7、 攻击或安全漏洞。
8、 ....
三、排查、分析及解决问题的办法【需要综合很多经验,故障要区别对待(P0~P4),大面积重要或核心功能受损最优先P0;个别用户外围功能受损:P4;每个级别承诺不同的响应时间】:
1、 仔细看报障提供的故障信息:包括但不限于故障方的环境【网络-电信还是网通,客户机IP地址,DNS地址,浏览器,操作系统等】,报障内容(截图)。自己看问题能否重现。如能重现,比较好办:依据经验,可能可快速判断问题所在;若不能,可进行抓包,常用工具:HttpWatch,HttpAnalyser,FireFox里的插件,wireshark等等。若不能重现,则继续:
2、 查看网络状态:ping 服务器及服务器上反ping用户IP或traceroute/tracert。同时看监控系统是否有监测到相关报警,确认无外围的硬件与网络问题。
3、 组织人手,让业务运维最直接的人参与进来,排查。确认是否最近有变更。
4、 着手自己排查:找到相关架构(前端所有机器Nginx,Squid等),应用服务器(PHP or Resin),缓存层Memcache,数据库(Mysql,Oracle),清楚地知道为该应用提供服务所有机器。
5、 查看前端机器的资源情况【负载,CPU,内存,磁盘,进程,定进任务等】:top, w, sar, dmesg(/var/log/messages), ps, df, free, vmstat, iostat, netstat, telnet, curl, wget, lsof, cat等等。如负载过高,CPU繁忙,系统占用比率过高;内存缺少,OOM(Out Of Memory),Swap使用过多等;磁盘空间不足,IO利用率过高;进程数过多,死锁;数据库慢查询过多,session\processes过多;流量过高,异常增减,断开;系统日志(dmesg或/var/log/message)报错;应用日志报错(各种错误,如4XX,5XX;或原来正常的接口现在无法访问;无法解析;响应时间过长….);。。。。
dmesg
vi /var/log/messages
netstat –na|grep LISTEN
netstat –nlp –ip
iptables –nL
sysctl -a
cat /etc/rc.local
cat /etc/resolv.conf
ps –ef|grep java
ps –ef|grep php
ps –ef|grep mysql
ps –ef|grep nginx
df –h
fdisk –l
mount
crontab –l
sar –f /var/log/sa/sar* 将sar改为分钟级别记录,同时分析对比一段时间的变化,以Excel画图
分析日志(nginx等)的变化,请求数,错误率,做一段时间的对比,以Excel画图(不同机器横比,不同时间纵比)。
下面是一些技巧:
对比查看PHP服务器的PHP查询慢日志条数(slow query log count): wc –l /tmp/clientweb/log/slow_~day.log
将多台服务器上sar的相应值拿出来,将在excel中画图对比(不同机器横比,不同时间纵比) :
for file in `ls –tl /var/log/sa/ `
do
sar –f $file|awk ‘{print 100-$7}’
done
在Linux下以主机头信息查看某个IP的服务是否正常:
curl –H “Host: www.5iops.com” http://202.96.159.234:80/index.php
curl –Iv –H “Host: www.5iops.com” http://202.96.159.234:8080/index.php
demsg中有这个报错:ip_conntrack: table full, dropping packet.查看系统内核配置及当前使用状态:
[root@166-208 ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
81920
[root@166-208 ~]# cat /proc/net/ip_conntrack|wc -l
45899
查找/目录下大于100M的文件:find / -size +100000k -exec ls -hl {} \;
[root@166-88 /]# find / -size +100000k -exec ls -hl {} \;
-rw-r--r-- 1 root root 526M 12-03 20:29 /usr/local/nginx/logs/error.log
-rw-r--r-- 1 root root 291M 2010-07-15 /usr/local/resource.tar.gz
-rw-r--r-- 1 root root 454M 12-03 20:29 /usr/local/resin/logs/access.log
-rw------- 1 root root 362M 12-03 20:25 /var/log/messages
-rw-r--r-- 1 root root 8.2G 12-02 23:59 /home/adlogs/adrequest.log.2011-12-02
-rw-r--r-- 1 root root 7.6G 12-03 20:29 /home/adlogs/adrequest.log
-rw-r--r-- 1 root root 8.1G 12-01 23:59 /home/adlogs/adrequest.log.2011-12-01
-rw-r--r-- 1 root root 405M 12-02 00:10 /home/adlogs_backup/adrequest.log.2011-12-01.tar.gz
-rw-r--r-- 1 root root 406M 12-03 00:09 /home/adlogs_backup/adrequest.log.2011-12-02.tar.gz
1、 前端应用/网页显示不正常,出错5XX,4XX或其他错误信息或慢或出不来;
2、 当前端端应用/网页暂时显示正常,但监控系统报警:如负载过高,CPU繁忙,系统占用比率过高;内存缺少,OOM(Out Of Memory),Swap使用过多等;磁盘空间不足,IO利用率过高;进程数过多,死锁;数据库慢查询过多,session\processes过多;流量过高,异常增减,断开;系统日志(dmesg或/var/log/message)报错;应用日志报错(各种错误,如4XX,5XX;或原来正常的接口现在无法访问;无法解析;响应时间过长….);。。。。
3、系统时而正常,时而不正常,或者之前正确结果,但突然不正确,或者某地用户出问题,但本地正常。
二、主要的原因:
1、 各类新版本发布、变更配置引起。如新版本配置不正确;iptables; DNS设置;接口调用发生变化等。【所有变更务必进行记录,以供查询】
2、 用户行为变化(如进行商业推广,接口加载变化),请求量大增。系统容量不足,如内核参数设置过小,资源过少。带宽不够;数据库慢。
3、 应用程序的BUG。
4、 运维人为错误的修改、配置。如修改密码,增加定时任务,脚本。
5、 网络或硬件故障。如交换机故障,网线故障(千兆变百兆),网卡驱动;磁盘故障、主板故障等。
6、 所依赖的接口或服务挂起(如DNS,后端接口).
7、 攻击或安全漏洞。
8、 ....
三、排查、分析及解决问题的办法【需要综合很多经验,故障要区别对待(P0~P4),大面积重要或核心功能受损最优先P0;个别用户外围功能受损:P4;每个级别承诺不同的响应时间】:
1、 仔细看报障提供的故障信息:包括但不限于故障方的环境【网络-电信还是网通,客户机IP地址,DNS地址,浏览器,操作系统等】,报障内容(截图)。自己看问题能否重现。如能重现,比较好办:依据经验,可能可快速判断问题所在;若不能,可进行抓包,常用工具:HttpWatch,HttpAnalyser,FireFox里的插件,wireshark等等。若不能重现,则继续:
2、 查看网络状态:ping 服务器及服务器上反ping用户IP或traceroute/tracert。同时看监控系统是否有监测到相关报警,确认无外围的硬件与网络问题。
3、 组织人手,让业务运维最直接的人参与进来,排查。确认是否最近有变更。
4、 着手自己排查:找到相关架构(前端所有机器Nginx,Squid等),应用服务器(PHP or Resin),缓存层Memcache,数据库(Mysql,Oracle),清楚地知道为该应用提供服务所有机器。
5、 查看前端机器的资源情况【负载,CPU,内存,磁盘,进程,定进任务等】:top, w, sar, dmesg(/var/log/messages), ps, df, free, vmstat, iostat, netstat, telnet, curl, wget, lsof, cat等等。如负载过高,CPU繁忙,系统占用比率过高;内存缺少,OOM(Out Of Memory),Swap使用过多等;磁盘空间不足,IO利用率过高;进程数过多,死锁;数据库慢查询过多,session\processes过多;流量过高,异常增减,断开;系统日志(dmesg或/var/log/message)报错;应用日志报错(各种错误,如4XX,5XX;或原来正常的接口现在无法访问;无法解析;响应时间过长….);。。。。
dmesg
vi /var/log/messages
netstat –na|grep LISTEN
netstat –nlp –ip
iptables –nL
sysctl -a
cat /etc/rc.local
cat /etc/resolv.conf
ps –ef|grep java
ps –ef|grep php
ps –ef|grep mysql
ps –ef|grep nginx
df –h
fdisk –l
mount
crontab –l
sar –f /var/log/sa/sar* 将sar改为分钟级别记录,同时分析对比一段时间的变化,以Excel画图
分析日志(nginx等)的变化,请求数,错误率,做一段时间的对比,以Excel画图(不同机器横比,不同时间纵比)。
下面是一些技巧:
对比查看PHP服务器的PHP查询慢日志条数(slow query log count): wc –l /tmp/clientweb/log/slow_~day.log
将多台服务器上sar的相应值拿出来,将在excel中画图对比(不同机器横比,不同时间纵比) :
for file in `ls –tl /var/log/sa/ `
do
sar –f $file|awk ‘{print 100-$7}’
done
在Linux下以主机头信息查看某个IP的服务是否正常:
curl –H “Host: www.5iops.com” http://202.96.159.234:80/index.php
curl –Iv –H “Host: www.5iops.com” http://202.96.159.234:8080/index.php
demsg中有这个报错:ip_conntrack: table full, dropping packet.查看系统内核配置及当前使用状态:
[root@166-208 ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
81920
[root@166-208 ~]# cat /proc/net/ip_conntrack|wc -l
45899
查找/目录下大于100M的文件:find / -size +100000k -exec ls -hl {} \;
[root@166-88 /]# find / -size +100000k -exec ls -hl {} \;
-rw-r--r-- 1 root root 526M 12-03 20:29 /usr/local/nginx/logs/error.log
-rw-r--r-- 1 root root 291M 2010-07-15 /usr/local/resource.tar.gz
-rw-r--r-- 1 root root 454M 12-03 20:29 /usr/local/resin/logs/access.log
-rw------- 1 root root 362M 12-03 20:25 /var/log/messages
-rw-r--r-- 1 root root 8.2G 12-02 23:59 /home/adlogs/adrequest.log.2011-12-02
-rw-r--r-- 1 root root 7.6G 12-03 20:29 /home/adlogs/adrequest.log
-rw-r--r-- 1 root root 8.1G 12-01 23:59 /home/adlogs/adrequest.log.2011-12-01
-rw-r--r-- 1 root root 405M 12-02 00:10 /home/adlogs_backup/adrequest.log.2011-12-01.tar.gz
-rw-r--r-- 1 root root 406M 12-03 00:09 /home/adlogs_backup/adrequest.log.2011-12-02.tar.gz
上一篇:第一页
下一篇:Nginx升级后导致文件下载不完整或僵死的解决
分享到:
收藏
评论排行
- ·Windows(Win7)下用Xming...(92)
- ·使用jmx client监控activemq(20)
- ·Hive查询OOM分析(14)
- ·复杂网络架构导致的诡异...(8)
- ·使用 OpenStack 实现云...(7)
- ·影响Java EE性能的十大问题(6)
- ·云计算平台管理的三大利...(6)
- ·Mysql数据库复制延时分析(5)
- ·OpenStack Nova开发与测...(4)
- ·LTPP一键安装包1.2 发布(4)
- ·Linux下系统或服务排障的...(4)
- ·PHP发布5.4.4 和 5.3.1...(4)
- ·RSYSLOG搭建集中日志管理服务(4)
- ·转换程序源码的编码格式[...(3)
- ·Linux 的木马程式 Wirenet 出现(3)
- ·Nginx 发布1.2.1稳定版...(3)
- ·zend framework文件读取漏洞分析(3)
- ·Percona Playback 0.3 development release(3)
- ·运维业务与CMDB集成关系一例(3)
- ·应该知道的Linux技巧(3)