1 排查思路
1.1 查看宕机的时间记录和历史登陆还有重启时间
1)查看历史重启
last reboot
last -F |grep crash
2)查看历史异常登录用户
last
1.2 首先查看系统日志
linux下的/var/log/下的log日志,包括message,内核报错日志demsg等等,sa记录,是记录cpu,内存等运行的性能文件,记录着运行时的cpu的运行状态等。
1)利用sa文件查看宕机时CPU情况
sar -u -f /var/log/sa/sa27
2)利用sa文件查看宕机时内存情况
sar -r -f /var/log/sa/sa27
3)查看系统报错日志
tail -200 /var/log/messages |grep "Error"cat /var/log/dmesg|grep "Error"
4)查看系统内核崩溃日志
tail -200 /var/log/messages |grep "crash"
5)查看是否出现OOM,一般会出现kill杀死进程的情况
cat /var/log/messages|grep -i "kill"
6)查看宕机时间段的日志
cat /vat/log/messages|grep "Feb 11 15*"
1.4 查看内存使用
free -m,查看swap的使用和内存剩余情况和缓存。如果swap用了,且available也不够了,具体还要查看参数cat /proc/sys/vm/swappiness,如果设置为0,说明内存不够了。
free -m
1.5 查看io和文件系统使用
观察idle和iowait。磁盘读写时会用到缓存,一般为系统内存的40%,但是中间有一个缓冲时间120秒,将要用完这个缓存时,且会等待120秒,才会写入磁盘,在读写频繁的时候容易造成hang住的情况。
iostat
查看IO的读写速度,如果很慢说明磁盘性能出现瓶颈。
1.6 查看安全日志
安全日志为/var/log/secure,查看history记录,查看是否有人登陆主机并做了恶意动作,例如关机。
1.7 利用kdump和crash工具分析内核
检查服务器开启了kdump服务,并在/var/crash目录找到了当天生成的vmcore文件,使用crash工具分析vmcore文件。
Kdump 用于对内存镜像的转储,它不但可以转储内存镜像到本地硬盘,还可以将内存镜像通过NFS,SSH 等协议转储到不同机器的设备上。
Kdump 分为两个组件:Kexec 和Kdump。
Kexec 是一种内核的快速启动工具,可以使新的内核在正在运行的内核(生产内核)的上下文中启动,而不需要通过耗时的BIOS 检测,方便内核开发人员对内核进行调试。
Kdump 是一种有效的内存转储工具,启用 Kdump 后,生产内核将会保留一部分内存空间,用于在内核崩溃时通过 Kexec 快速启动到新的内核,这个过程不需要重启系统,因此可以转储崩溃的生产内核的内存镜像。
1.8 查看服务日志和监控软件
如果在能找到宕机时进程的占用情况,可以根据占用异常的服务查看其日志。
服务日志一般有数据库和web服务,中间件,框架等。
2 总结