服务器宕机原因排查思路


###1.真假死机

真死机

  服务器确确实实宕机了,导致服务不可用,无法访问。

假死机

  由于硬件资源暂时性地被消耗殆尽,因而无法对外部指令进行响应的现象,比如CPU和内存被占满,表明有软件正在大量的占用服务器的内存和CPU,或者网站处于访问高峰期,带宽资源跑满等,这时只需要等待一定的时间,待服务器腾出更多的硬件资源即可恢复正常,如果长时间恢复不了,可能需要我们手动处理下,比如杀死进程。

  那么,如何解决这个问题呢?第一,要从网站着手,看看是不是网站程序有不合理的地方,数据查询,是否有死循环。尽可能的用html静态网页显示,减轻数据库的压力。第二,升级服务器硬件配置,例如:加大服务器内存,升级服务器CPU,加大服务器带宽,这样就可以解决服务器假死机的问题。

###2.宕机可能原因

访问量过高,超出系统承载能力,包括正常的短暂性突增,或者异常访问,比如黑客攻击等;
服务器配置过低,导致即便访问量不算太高也超出了系统承载能力,需要提高配置;
应用程序本身存在bug,比如死循环,消耗系统资源的逻辑导致资源耗尽;
某些系统参数配置不合理,比如fd个数或允许连接数过低等;
多线程造成的死锁现象,互相等待对方释放资源;
服务器硬件故障,比如内存故障,需要更换;
系统内核bug,比如软死锁等,需要升级内核;
当然,也有可能是人为误操作导致的;

###3.排查思路  

首先判断是真死还是假死,如果假死,那等一段时间或手动杀死进程即可,如果真死则需要进一步排查;

查看系统日志 /var/log/messages,分析宕机时间前后的系统日志,看看是否有明显的报错,比如oom或内核bug;

如果启用了kdump,也可以查看宕机生成的crash文件,默认/var/crash目录下,注意生成时间是否对应;

查看监控数据,在宕机前有没有指标异常,比如CPU或内存突增,可能短暂突发上量超过系统承载能力;

也有可能是硬件故障,可以看下/var/log/dmesg,或者登录远控查看系统日志,比如内存故障等,可能需要更换;

###4.如何处理

首先恢复业务、

分析问题,排查原因、

制定解决方案、

完善监控,及时发现、

复盘总结,避免再次发生,

经验积累,知识库

###5.没有办法的办法

万能的重启

所有日志文件

/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log — 记录所有等级用户信息的日志
/var/log/Xorg.x.log — 来自X的日志信息
/var/log/alternatives.log – 更新替代信息都记录在这个文件中
/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“
/var/log/cups — 涉及所有打印信息的日志
/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中
/var/log/yum.log — 包含使用yum安装的软件包信息
/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中
/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里
/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等
/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志
/var/log/prelink/ — 包含.so文件被prelink修改的信息
/var/log/audit/ — 包含被 Linux audit daemon储存的信息
/var/log/samba/ – 包含由samba存储的信息
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件
/var/log/sssd/ – 用于守护进程安全服务

文章作者: Kevin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kevin !
评论
  目录