服务器是网络架构的核心部分,经常需要7*24的运行以满足用户的需求。但是,服务器也是机械设备,有时会因为软件或硬件故障而崩溃。当服务器崩溃时,数据丢失和系统中断是不可避免的,这对企业来说可能是一个严重的问题。(好在我大部分运行的服务是一些个人的业务,比如博客,私人网盘。)

报告概述

服务器崩溃持续的时间:约40小时(2023-2-08~2023-2-10)。

主要影响:博客和网盘以及以主节点为主运行的服务不能正常运行(KMS服务有多个节点,因此影响较小,QQ机器人服务有多个负载均衡的账号和设备,也影响较小)。

服务器崩溃的原因

服务器崩溃可能是由软件或硬件原因引起的。软件原因包括系统崩溃、应用程序错误、计划任务失败和病毒攻击。硬件原因包括硬盘故障、内存故障、电源故障和网络故障。

这一次崩溃的原因很复杂,甚至我到写这篇文章的时候都还没完全搞明白。

既包括了内存溢出导致的内存耗尽,又包括了日常的运维操作不当,以及后续的缺乏监控管理……(我这是来运维的还是来打杂的)

服务器崩溃的影响

在前面的报告概述中,我已经提到了一部分内容,我的网站之前总占用的空间比较大,达到了惊人的8G,后来我的网站不得不分批备份,同时备份导致磁盘I/O阻塞,影响PHP、MySQL等进程正常运行,在我之前的API文档中,我提到了我有一些API是非常重量级的,比如imagettftext、随机图片(数据库版本)、User-Agent(full),这里有些API单个请求就可能跑到256M内存了,虽然后面我建了几个节点在其它子节点服务器上,但还是不够用……

https://www.xiwangly.com/api-documentation.html

服务器崩溃不仅会导致数据丢失,还可能导致系统中断和生产线停滞。如果服务器是企业的核心系统,那么服务器崩溃可能导致生产率下降,损失客户信任和信誉(比如博客的友链,友人发现链接打不开了就可能认为是死链,然后就ban掉了我的链接,友谊到此结束)。

如何避免服务器崩溃

为了避免服务器崩溃,我总结了一下,大概有这些步骤可以采取:

  1. 实施数据备份:定期备份数据,以便在发生故障时可以快速恢复,备份永远是运维人员最好的伙伴!
  2. 开展定期维护:定期或不定期地对服务器进行检查,确保其处于最佳状态。
  3. 实施容错技术:使用容错技术,例如冗余,高可用性,热备份等,以避免单点故障。
  4. 预防内存溢出:分析程序和应用程序的内存使用情况,避免内存溢出。
  5. 监控集群状态:对集群进行实时监控,确保集群处理得到位。《k8s从安装到猝死》
  6. 使用现代技术:使用最新的技术,如云计算和虚拟化,以提高服务器的稳定性。
  7. 聘请专业人员:请专业的服务器管理员,以确保服务器的安全和稳定。(还是有人带着好啊,自己盲打莽撞什么时候是个头啊)

1