所以你有这个设置整齐的 unix 服务器,它超级快,运行良好,几个月来一切都很好,突然间,各种奇怪的错误开始出现在各种不同的服务中,而且它们本身没有多大意义,更不用说在一起了。
将 ssh 会话连接到机器后,您应该立即检查哪些便宜的东西?
我对强调不明显命令和罕见情况的创伤故事特别感兴趣,但我想明显的东西因人而异,所以我们可以随意列出它们。
所以你有这个设置整齐的 unix 服务器,它超级快,运行良好,几个月来一切都很好,突然间,各种奇怪的错误开始出现在各种不同的服务中,而且它们本身没有多大意义,更不用说在一起了。
将 ssh 会话连接到机器后,您应该立即检查哪些便宜的东西?
我对强调不明显命令和罕见情况的创伤故事特别感兴趣,但我想明显的东西因人而异,所以我们可以随意列出它们。
第一顺序:反应灵敏吗?
如果您无法登录,则会出现更大的问题。这通常有两种形式:硬件故障和软件故障。两者都有潜在的灾难性。为防止 DFA 错误,请先检查一般硬件运行状况 - 通常简单浏览一下就足够了。
二阶:系统的底层结构是否健康有序?
检查系统的“黄金三合会”:
在过去的几十年里,三合会已经扩展成一个“四合会”,其中包括通信(网络):
三阶:问题的严重性是什么?
哪些计划或服务受到影响?按照严重程度的递减顺序,它是系统性的(系统范围的)、集群的(一组程序)还是孤立的(一个特定的程序)?程序集群通常会因为特定的底层服务失败或无响应而出错。系统性问题有时与此有关(想想 DNS 或 IP 冲突),但知道在哪里寻找通常是关键。
四阶:诊断工具是否提供与问题相关的有用数据? 现在您已经了解了系统的运行状况(二阶)以及系统的哪些部分遇到了问题(三阶),这应该可以轻松缩小问题所在。
错误消息或日志文件应该是此旅程中的常见航路点。
CPU问题:
磁盘空间/IO问题:
内存问题:
连接问题:
最常见的抱怨(我听到的):
电子邮件发送速度不够快(从发送到收件人收到超过一分钟),或者电子邮件拒绝我的发送尝试。这通常归结为在垃圾邮件风暴期间启动 Postfix 中的速率限制器,这会影响接受内部交付的能力。
一个真实的例子:
然而,这并非总是如此。有一次,无论服务重新启动,问题仍然存在;所以 3 分钟后是时候开始环顾四周了。CPU 很忙,但低于 100%,但在只有 2 个内核的盒子上负载已飙升至 15,并且有可能会更高。top 命令显示邮件系统和邮件扫描程序都处于超速状态,但没有看到 amavis 子进程。这就是线索——邮件队列命令 (mailq) 显示了大约 150 多封未送达的邮件,其中超过 80% 是垃圾邮件,在最后 20 分钟内。快速调整以降低速率限制器(降低垃圾邮件风暴的摄入率)同时增加子电子邮件扫描程序进程的数量(以帮助处理积压),然后重新启动服务,解决了问题并且系统能够在短时间内完成交货。
问题的原因是 amavis 父进程已经死机,而子进程最终都运行了它们的过程(它们在进行了多次扫描以防止内存泄漏后自行终止)。因此,postfix 中有 SMTP 进程试图联系……稀薄的空气……进行所需的垃圾邮件/病毒扫描。我使用的发行版包含永远不会更新的过时软件包;由于安装将在一年左右更换,我手动将安装“覆盖”到最新版本,其中包括几个错误修复。从那以后我没有遇到同样的问题。
通常是“谁”后跟“最后一个”
我长期以来管理的机器上的一堆问题是因为对“未触及”的定义非常松散——通常有人做了一些事情:)
好吧,我会开始的。
这一次咬了我一次,我花了几个小时尝试数千种不同的东西,到处禁用服务,重新启动等等。问题是什么?完全没有磁盘空间。
所以,这是我在调试突然出现问题的服务器时输入的第一件事:
我现在永远不会忘记这一点。它只是为我节省了很多浪费的精力。以为我会分享。
顶部(或 htop)
如果可以的话,我总是会尝试关闭所有网卡(除了管理网卡)。
我检查的第一件事是“顶部”(是否有任何奇怪的进程;占用内存或 CPU 时间的进程。)
如果那里什么都没有,我会检查“谁”,看看是否有其他人出于某种原因在我的机器上。
也许文件系统被卸载了;检查调用“cat /etc/mtab”,然后调用“fstab”,以确保在启动时一切正常。
检查正常运行时间以确保框中的用户数是合理的(应该只有您),然后浏览 var/log/auth.log 以查看是否有任何问题。
这些都是包罗万象的。根据您的盒子抛出的错误,您可能需要检查导致问题的特定进程。
在主机上运行(at)sar之类的东西几乎是强制性的。能够获取 CPU、网络、内存和磁盘 I/O(以及其他)的历史快照的用处不可低估。
有很多次,我能够通过检查主机在过去 24 小时内所做的事情来诊断故障,并查看事情何时开始出错。
检查 dmesg 是否有任何错误 - 我通常以 a 开头
dmesg | tail
,因为事情可能仍然出错,并且服务器仍在尝试执行导致错误的任何事情。顶部 df -h 并始终检查 /var/log 以确保该分区尚未填满。这导致我几次彻底崩溃。
df-ha
检查硬盘驱动器是否已满并且有人没有收到警告
htop 或顶部
检查内存和cpu使用情况并没有异常高。
或者,如果盒子没有响应,我会进入 vm-ware 客户端并从那里检查 cpu/ram。