宕机恢复后如何重启服务
服务器上重启博客后台服务:
检查是否有进程的comm是“java”
ps -eo pid,comm | grep "java"
若无则运行halo jar包
nohup java -jar halo-1.5.4.jar &
检查是否有进程的comm是“nginx”,若无则重启nginx服务
nginx -s reload #可能由于一些排错/usr/local/nginx/logs/nginx.pid文件会被清空或者被删除,则需先nginx -c /usr/local/nginx/conf/nginx.conf再reload
宕机原因和解决
宕机现象
直接现象:浏览器访问个人博客提示服务器拒绝连接,ssh远程连接工具无法连接上云服务器
- 真死机
服务器确确实实宕机了,导致服务不可用,无法访问。
- 假死机
由于硬件资源暂时性地被消耗殆尽,因而无法对外部指令进行响应的现象,比如CPU、内存、带宽被占满、磁盘空间耗尽。
宕机原因
访问量过高,超出系统承载能力,包括正常的短暂性突增,或者异常访问,比如黑客攻击等;
服务器配置过低,导致即便访问量不算太高也超出了系统承载能力,需要提高配置;
应用程序本身存在bug,比如死循环,消耗系统资源的逻辑导致资源耗尽;
某些系统参数配置不合理,比如fd个数或允许连接数过低等;
多线程造成的死锁现象,互相等待对方释放资源;
服务器硬件故障,比如内存故障,需要更换;
系统内核bug,比如软死锁等,需要升级内核;
人为误操作;
宕机排查和解决
- 首先判断是真死还是假死,如果假死,那等一段时间或手动杀死进程即可(当然建议检查杀死的高消耗进程对应的程序逻辑是否有不合理的地方),如果真死则需要进一步排查;
- 查看系统日志 /var/log/messages,分析宕机时间前后的系统日志,看看是否有明显的报错,比如oom或内核bug;
- 如果启用了kdump,也可以查看宕机生成的crash文件,默认/var/crash目录下,注意生成时间是否对应;
- 查看监控数据,在宕机前有没有指标异常,比如CPU或内存突增,可能短暂突发上量超过系统承载能力;
- 也有可能是硬件故障,可以看下/var/log/dmesg,或者登录远控查看系统日志,比如内存故障等,可能需要更换
没有办法的办法:重启
云服务器的话一般控制台有重启按键,重启云服务器
所有日志文件
/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/ – 用于守护进程安全服务