是什么可以导致服务器上的所有服务中断,但仍然对ping作出响应?以及如何找出


9

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

我确实有一些php脚本,它们会在短时间内导致服务器上的大量负载(CPU和内存),并由一小部分用户使用,但是通常服务器在这些情况下以及崩溃时都能很好地“生存”永远不会与使用高峰相吻合(我不是说它不可能相关,但不会在这些高峰之后发生)。

我并不是要您神奇地告诉我这些崩溃的最终原因,我的问题是:是否存在一个进程死亡,该进程可能导致所有这些服务同时中断?有趣的是,除ping之外,所有网络服务均出现故障。如果服务器某个进程消耗了100%的CPU,则它也不会响应ping。如果apache因(例如)损坏的php脚本而崩溃,那只会影响http,而不会影响ssh和dns ..等。

我的操作系统是Cent OS 5.6

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

Answers:


8

tl; dr仍对ping响应是一种预期的行为,请检查您的内存使用情况)

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

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

这意味着在物理内存用完的情况下,应用程序将交换到磁盘,但内核仍保留在原处。当物理内存和交换内存都已满(并且系统不再能够管理您的程序)时,计算机将崩溃。但是,由于a)内核仍在内存中,并且b)它可以在没有其他任何帮助的情况下响应ping请求,因此即使一切都死了,系统仍将继续响应ping。

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

我还将考虑查看dmesg/ var / log / messages以查看是否有OOM杀手(内存不足杀手)被调用的迹象。这是内核的紧急系统,一旦内存耗尽,该系统将开始终止进程​​。它的有效性在很大程度上取决于要杀死哪些进程。占用内存的单个进程将被有效地杀死并释放内存,但是,基于Apache的网站将在杀死子进程后立即生成替换进程。


为OOM Killer +1
HTTP500 2012年

非常感谢,我几乎可以确定这是问题所在,因为在服务器故障之前,RAM和交换器都已满。(我可以在ovh的“经理”统计中看到)。这可能是我使用大量内存的一些疯狂php脚本。但是,有两个原因确实使我感到困惑。(1)看起来php之后消耗的内存没有被释放,但这没有任何意义;(2)无论如何,我不会因为一个(或几个)进程使用过多的内存而完全崩溃一个合适的操作系统……我希望它会
matteo 2012年

当系统内存不足以保持系统正常运行时,拒绝为程序分配内存...我的意思是,有缺陷的程序甚至是恶意程序都永远无法破坏整个系统...
matteo 2012年

3
@matteo Linux具有所谓的“过量使用”:仅仅因为您有malloc()1GB的ram实际上并不意味着您将要使用它,因此内存管理器会跟踪您的程序认为它有多少内存以及该程序有多少内存。该程序实际上已经使用,并且在大多数情况下都运行良好。至少,直到一个以上的程序实际要使用它认为拥有的所有1GB内存为止。
DerfK

1
@matteo我看不到这是OOM问题的迹象。通常,OOM杀手会选择满足特定条件的特定程序或进程,但并不总是会杀死ssh之类的守护程序。这绝对是在I / O端。您没有按照我在答复中的要求解释您的硬件状况/规格。
ewwhite 2012年

5

通常,这是一个I / O或磁盘子系统问题。通常,这将伴随着极高的系统平均负载。例如,在4-CPU系统上,当脚本运行错误,锁定了一堆文件并且负载上升到36 ...时,下图中详细说明的系统变得无响应(但仍可ping通)。

在此处输入图片说明

正在RAM中运行并且不需要磁盘访问的服务将继续运行...因此,网络堆栈(ping)已启动,但是在需要磁盘访问时其他服务停顿了。需要密码查找。当平均负载达到30左右时,SMTP倾向于关闭。

当系统处于此状态时,请尝试使用nmap服务器IP 的遥控器来查看发生了什么。

如果这是磁盘或存储问题,则您的日志记录可能不起作用...

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

除了记录外,您还想查看是否可以绘制系统性能图并了解何时发生。查看是否与特定活动相关。


假设这是问题所在,是否有办法告诉SSH将密码保留在内存中,所以即使服务器处于此状态,我至少也可以通过ssh登录并运行一些命令以查看这是怎么回事?
matteo 2012年

1
如果是I / O,则需要深入研究问题。如果是磁盘阵列超时或驱动程序交互,则与执行效果不佳或资源争用问题的脚本不同。
ewwhite 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.