当一个未被感染的unix服务器开始狂暴时,你检查的第一件事是什么?

所以,你有这个整齐的设置UNIX服务器,它超快速和膨胀,一切都是好几个月,突然各种奇怪的错误开始显示出各种不同的服务,没有一个自己很有意义,更less一起。

什么是便宜的东西,你应该检查一旦你的SSH会话的机器?

我特别感兴趣的是那些突出显示非显而易见的命令和罕见情况的创伤故事,但是我认为明显的因人而异,所以我们可以自由地列出它们。

第一顺序:它是否响应?

如果您无法login,则会出现更大的问题。 这通常有两种:硬件故障和软件故障。 两者都可能是灾难性的。 为了防止DFA错误,请首先检查一般的硬件健康状况 – 通常简单的浏览就足够了。

二阶:系统的基础结构是否健康有序?

检查系统的“金三angular”:

  • 足够的CPU时间是免费的处理
  • 足够的磁盘空间可用于存储
  • 足够的内存可用于工作负载

在过去的几十年里,黑社会已经扩展到了包括通讯(networking)在内的“四重奏”:

  • 连接function,响应能力和能力

三阶:问题的严重性是什么?

哪些程序或服务受到影响? 按照严重程度的降序排列,是系统性的(全系统的),聚集的(一组程序)还是孤立的(一个特定的程序)? 由于特定的底层服务失败或无响应,程序集群通常会跳闸。 系统性问题有时与此有关(认为DNS或IP冲突),但知道去哪里寻找通常是关键。

第四顺序:诊断工具是否提供与问题有关的有用数据? 现在你已经知道了系统的健康状况(第二顺序)以及它的哪些部分正在发生问题(第三顺序),这可以很容易地缩小问题的位置。

错误消息或日志文件应该是这个旅程中的常见途径。

CPU问题:

  • loadav
  • 最佳
  • strace的

磁盘空间/ IO问题:

  • DF
  • lsof的
  • iostat的
  • vmstat的

内存问题:

  • 自由

连接问题:

  • 路线(和arp和rarp和朋友)
  • iptables,ipchains,ipfw(对于那些BSD的人)
  • traceroute或mtr
  • 主机,nslookup或挖掘
  • netstat的

最常见的投诉 (我听到):

电子邮件发送速度不够快(收件人发送到收件人的时间超过一分钟),或者电子邮件拒绝发送。 这通常归结为在垃圾邮件风暴期间Postfix踢的速率限制器,这会影响接受内部传送的能力。

一个真实的例子:

但是,情况并非总是如此。 有一次,无论服务重启,问题依然存在; 所以3分钟后就开始四处看看了。 中央处理器很繁忙,但是在100%以下,但只有2个内核的负载已经猛增到15,并有威胁要boost。 最上面的命令显示邮件系统与邮件扫描器一起过载,但是没有amavissubprocess可见。 这就是线索 – 邮件队列命令(mailq)在过去的20分钟内显示了150多个未传送的邮件,其中超过80%是垃圾邮件 。 在增加子邮件扫描程序进程的数量(以帮助处理积压),然后重新启动服务的同时,降低限速程序(降低垃圾邮件风暴的进入速率),进行快速调整,解决了问题,系统能够在短时间内完成交付。

问题的原因是amavis的父进程已经崩溃了,而且subprocess最终都是按照自己的方式运行(经过如此多的扫描以防止内存泄漏,它们自行终止)。 所以有postfix的SMTP进程试图联系…稀薄的空气…做垃圾邮件/病毒扫描是必要的。 我使用的发行版已经过时了,永远不会更新。 由于安装将在一年左右被replace,我手动“覆盖”安装到最新版本,其中包括几个错误修复。 自那以后,我没有同样的问题。

通常“谁”跟着“最后”

我经常pipe理的机器上的一堆问题是由于“未触及的”的定义非常松散 – 通常有人做了某事:)

那么,我会开始。

这一点我曾经一次,我花了数小时尝试成千上万的不同的事情,在这里和那里停止服务,重新启动等等是什么问题? 完全没有磁盘空间。

所以,这是我在debugging突发问题的服务器时input的第一个内容:

df -h 

我现在永远不会忘记。 它为我节省了大量的浪费。 以为我会分享。

顶部(或顶部)

如果可以的话,我会一直尝试closures所有网卡,禁止pipe理网卡。

检查dmesg的任何错误 – 我通常从一个dmesg | tail开始 dmesg | tail ,因为机会是事情仍然是错误的,服务器仍然试图做任何导致错误。

我首先检查的是“顶部”(有没有什么奇怪的进程;那些占用内存或CPU时间的进程)。

如果什么都没有出现,我会检查是否有其他人出于某种原因在我的机器上。

也许文件系统被卸载; 请查看“cat / etc / mtab”,然后select“fstab”,以确保启动时所有内容都能正常运行。

检查正常运行时间以确保盒子上的用户数量合理(只应该是你),然后通过var / log / auth.log查看是否有任何错误。

这些都是通用的。 根据您的盒子发生的错误,您可能需要检查造成问题的特定过程。

顶部df -h,并总是检查/ var /日志,以确保分区没有填满。 这已经导致了我几次的总体消融。

df -ha

检查硬盘是否满了,有人没有收到警告

htop或顶部

检查内存和CPU使用率并不是很高。

或者,如果该框没有响应,我进入虚拟机客户端,并从那里检查CPU / RAM。

在主机上运行一些东西几乎是必须的。 能够获取CPU,networking,内存和磁盘I / O(等等)的历史快照的有用性不能被低估。

曾经有很多次,我可以通过检查主持人在过去24小时内做的事情,以及看到什么时候开始出现错误来诊断错误。

在linux上,我通常检查dmesg和/ var / log / messages或/ var / log / syslog。 dmesg会显示是否突然出现硬件故障; 系统日志中会出现很多其他问题。

我想我做的第一件事是磁盘空间检查(如其他人所提到的)。 如果简单的检查不显示“常见”的问题,那么我会进一步调查。

我喜欢做的一件事是捕获系统的快照。 后来我可以用这些方法去寻找引起我注意的事情。

 lsof > /tmp/lsof.tmp & ps auxfw > /tmp/ps.tmp & netstat -anp > /tmp/netstat.tmp & 

从那里它是故障排除101,但我发现它更快地grep保存的日志,如果条件清除,而我login,我有东西要去或寻找变化。