什么会导致服务器上的所有服务closures,但仍然响应ping? 以及如何弄清楚

在几天之内,我已经发生了两次,我的服务器完全closures,这意味着http,ssh,ftp,dns,smtp,基本上所有的服务都停止响应,就好像服务器已经closures,除非它仍然响应ping ,这是最让我吃惊的。

我确实有一些PHP脚本在服务器上造成巨大的负载(cpu和内存),只有一小部分用户使用,但通常这些服务器在这些连接上“很好地存活”,当它下降时从不与用法上的高峰相吻合(我不是说它不能相关,而是在那之后不会发生)。

我不是要求你神奇地告诉我这些崩溃的最终原因,我的问题是:是否有一个单一的过程,其死亡可能导致所有这些服务同时下降? 有趣的是,除了ping,所有的networking服务都closures了。 如果服务器有100%的CPU被某个进程吃掉,它也不会响应ping。 如果apache因为(例如)一个破坏的PHP脚本而崩溃,那只会影响http,而不是ssh和dns ….等等。

我的操作系统是Cent OS 5.6

最重要的是,在重新启动服务器之后,我应该查看哪些系统日志? / var / log / messages不会显示任何可疑内容。

tl; dr仍然响应ping是一个预期的行为,检查你的内存使用情况)

ICMP回应请求(即ping)由内核networking堆栈处理,没有其他依赖性。

内核被称为“内存驻留”,这意味着它将始终保存在RAM中,不能像常规应用程序那样交换到磁盘。

这意味着在运行物理内存应用程序时将其交换到磁盘,但内核仍然保留在原来的位置。 当物理内存和交换内存都满了(系统不能长时间pipe理你的程序)时,机器将会崩溃。 但是因为a)内核仍然在内存中, b)它可以在没有其他任何帮助的情况下响应ping请求,尽pipe一切都已经死亡,但是系统将继续响应ping。

关于你的问题,我强烈怀疑内存问题。 安装“sysstat”并使用“sar”命令查看内存/ cpu / load / io加载等的日志。我期望在崩溃的时候,您会看到100%物理和交换使用。

我也会考虑在dmesg/ var / log / messages中寻找被调用的OOM杀手(out-of-memory-killer)的任何符号。 这是内核紧急系统,在内存耗尽的情况下,它将开始查杀进程。 它的有效性很大程度上取决于哪些进程正在被杀死。 消耗内存的单个进程将被有效地杀死并释放内存,但是一个基于apache的网站会在subprocess死后立即产生replace进程。

通常,这是一个I / O或磁盘子系统问题。 通常情况下,这将会伴随着非常高的系统负载平均值。 例如,下图中详细描述的系统在脚本运行出错时locking了一堆文件,负载上升到36 …在4-CPU系统上变得没有响应(但是可以ping通)。

在这里输入图像描述

在RAM中运行并且不需要磁盘访问的服务将继续运行…因此,networking堆栈(ping)已启动,但其他服务在需要磁盘访问时会停止运行。密码查找需要。 当负载平均点击30左右时,SMTP往往会closures…

当系统处于这种状态时,请尝试远程nmap对服务器的IP,看看发生了什么。

如果这是一个磁盘或存储问题,您的日志logging可能不起作用…

你能描述硬件设置吗? 这是一个虚拟机? 什么是存储布局?

除了日志logging之外,您还希望了解是否可以绘制系统性能图表并了解何时发生这种情况。 看看这是否与特定活动相关。