分类: 系统运维
2013-03-19 22:32:01
今天看了一篇 老外的博文,关于解决服务器故障的前5分钟我们该了解什么,知道什么!原文地址是:http://devo.ps/blog/2013/03/06/troubleshooting-5minutes-on-a-yet-unknown-box.html
看了博文,大致的内容如下:
在服务器出现故障之前不要先急于解决问题,而是要先找出和故障相关的一些细节信息,这样才不会浪费大量的时间
比如:
1:出现这个故障会产生什么样的后果,反应变慢?报错?业务中断?
2:这故障时什么时候被人发现的?
3:这个故障会重复产生吗?
4:在产生故障之前对服务器有过什么操作,比如修改代码,参数调整,协议栈等
5:故障是否有特殊性?比如只针对某些用户,某个地域
6:针对该服务故障是否存在可参考的文档?
7:是否有监控平台? 比如:Zabbix, Nagios, New Relic
8:是否有服务错误日志可供参考?
下面的一些命令可以让你或许一些有用信息:
查看用户
$ w
$ last
这个2个命令虽然不怎么重要,但它确可以让你知道还有谁在操作这服务器,一个厨房只要一个厨师就够了
之前操作了什么命令
$ history
有哪些进程在跑
$
pstree -a
$ ps aux
有哪些网络服务开启的,监听的端口是什么
$ netstat -ntlp
$ netstat -nulp
$ netstat -nxlp
cpu和内存信息
$ free -m
$ uptime
$ top
$ htop
硬件信息
$
lspci
$ dmidecode
$ ethtool
io 性能
$ iostat -kx 2
$ vmstat 2 10
$ mpstat 2 10
$ dstat --top-io --top-bio
挂载的文件系统信息
内核,中断和网络负载
$ sysctl -a | grep ...
$ cat /proc/interrupts
$ cat /proc/net/ip_conntrack /* may take some time on
busy servers */
$ netstat
$ ss -s
系统内容日志和内核信息
$ dmesg
$ less /var/log/messages
$ less /var/log/secure
$ less /var/log/auth
crontab 执行任务
$ ls /etc/cron* + cat
$ for user in $(cat /etc/passwd | cut -f1 -d:); do crontab -l -u $user; done
总结:
在这5分钟时间内,你应该了解到:
1:有什么东西在运行
2:存在的故障是否有可能和io/硬件/网络/内核 有联系
3:有哪些应用是你可以意识到可能存在的故障