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