Debian的Linux服务器挂了一个星期左右

我有2个Debian Linux 6.0.4服务器有一个奇怪的行为:5-7-10天后,他们挂起。 通过这个我的意思是服务器需要重新启动,并在这之前,ping不会回答。

我已经在这个问题上挣扎了好几个月了,这里有一些想法/我没有能够解决问题的尝试。

  • 我更改了服务器上的RAM。 作为2个不同的服务器,我怀疑它可能是硬件相关的东西,因为第三个相同的服务器不会有这个问题。
  • 我login服务器的负载,当它崩溃的负载是好的(相当低)
  • 我找不到服务器日志中的任何内容,日志很好,直到服务器冻结。
  • 我不幸的是无法访问控制台。

虽然我有多年的pipe理经验,但我从来没有遇到过这样的问题,现在我不知道还有什么地方需要调查。

如果你有一个想法,我可以尝试解决这个问题,请与我分享:-)

服务器真的挂了吗?还是只能ping不通?

安装一个监控工具,比如Munin(或类似的),它可以显示CPU负载,内存状态,磁盘使用情况以及其他各种各样的graphics – 你可以configuration它监视很多方面。 Nex时间挂起服务器,检查图表是否有任何不寻常的迹象。 你将学会看看一个正常的图表是什么样的,所以任何异乎寻常的东西都是可疑的(尽pipe不一定是错误的)。

你确定你正在检查所有的服务器日志吗? 即你有Web /邮件/ FTP / DNS /其他服务器? 检查所有这些日志! 不要忘记在故障排除时启用debugging日志logging。

如果服务器每个星期左右崩溃,那么它可能会定期发生,例如cron作业或日志轮转等等。

确保你得到所有的系统邮件(root别名)。 您甚至可以安装OSSEC,这是一个很好的工具,可以在出现问题时关注日志并收取电子邮件。 但是这个OSSEC工具只是一个查看日志的自动化方式,所以没有什么不可思议的。

networking问题? dhcp租约过期了吗?

请显示/ var / log / messages和/或/var/log/kern.log的相关内容,这可能是内核logging了一些崩溃报告或其他可能导致问题的东西。 当我遇到这种无法解释的挂起时,这是由于一个糟糕的驱动程序,因为日志不是很详细,我无法find确切的驱动程序。

在我的情况下,有软locking(内核:[XXXX]错误:软locking – CPU#X)。 经过一番研究,我发现http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=556030 ,最后的评论提供了一些见解和一种使日志更加冗长的方法。 这是一个简单的内核修改,但如果你觉得编译自己的内核感觉不舒服,那么可能不是最好的。

只需更新内核或安装较新版本并重新启动即可解决问题。

引用:

我们广泛研究了这个问题。

TLB刷新软锁只是一个死锁的结果。

背景:CPU使用处理器间中断来发出TLB刷新,以便处理分页更改。 然后,发出CPU循环,直到所有处理器都确认更改。 如果这样的处理器在自旋锁上处于死锁状态,那么这个处理器永远不会移动,然后触发软件locking。 死锁出现在自旋锁上,这个锁有时可以由用户代码保存(通过模块的/ proc或/ sys接口)。

识别根本原因(即哪个驱动程序导致问题)的唯一方法是将所有CPU堆栈转储到软locking代码中。

一种方法是修改内核并添加

arch_trigger_all_cpu_backtrace() 

在里面

  kernel/softlockup.c:softlockup_tick() 

function。

这是基于NMI IPI,即使在死锁的情况下,也确保所有的堆栈都被转储(不要指望不可能发生)。

你应该很容易find错误的驱动程序,并发布相关的错误。

显然这个问题与一些导致服务器挂起的python脚本有关。 我不明白他们为什么吊死服务器,但至less他们不再挂上。