我公司的主服务器最近出现了大量停机时间。由于我和其他管理员都无法确定的原因,它的内存出现随机(非常突然)的爆炸。它变得没有响应,因为它耗尽了所有内存,然后我们必须重新启动它。很烦人。这是一个Debian系统,我们没有升级到Squeeze什么的,它已经完美稳定了很长一段时间。
问题是日志完全没用。他们似乎没有表明有什么问题。我猜测某些进程存在错误并占用了所有内存,但目前我无法证明这一点。远程日志记录没有任何帮助,因为它不会抱怨任何事情——它认为一切都很顺利。
所以我的问题是:你将如何解决这个问题?任何见解都值得赞赏。谢谢。
答案1
在顶上非常擅长监控和记录资源使用情况。它可以交互使用或作为服务使用;这Debian 软件包将其设置为每十分钟记录到 /var/log/atop.log (编辑 /etc/init.d/atop 以获得更精确的信息)。然后您可以使用atop -r /var/log/atop.log -b hh:mm -mM
;重播日志。 mM 选择适合内存问题的视图和排序,hh:mm 应该是事件发生前几分钟,使用 tT 进行导航。也可以尝试 A 类。
答案2
您可以尝试通过 /etc/security/limits.conf (pam_limits) 组合限制每个进程的地址空间 (as) 和每个用户的进程数 (nproc),希望这将有助于避免您的机器完全无响应无论是什么导致了问题,都会大声地死掉(或者导致问题的人抱怨他们的东西不再工作),这样你就可以找出真正的原因。
答案3
第一步是监视内存使用情况。top
可以做到这一点,但 Linux 版本设置起来很笨拙。制作top
名为 的可执行文件的副本top-mem-chris
。运行它并设置一些合理的参数,至少按内存使用情况排序(M
)并仅显示前 N 个任务(n 15
)。然后让它生成一个配置文件( W
) ~/.top-mem-chrisrc
。要进行监控,请运行top-mem-chris -b -d 5 >~/log/top-mem-mainserver.log
.或者,也许可以尝试阿特萨尔,看起来合适,但除了描述之外我不知道。
答案4
如果机器上有一个真正的头脑(不太可能),请尝试让您友好的数据中心设施技术人员按下caps lock普通的直连键盘。如果 x86 处理器仍在处理中断,应该可以工作。如果这不起作用,机器可能会坏掉。我想存在一些极端情况,如熄灯卡、ip kvm、ps/2 与 usb 等。
检查通常的情况:可用磁盘空间、crons、邮件假脱机、rootkit 等。此外,我还见过损坏的硬件,即 PSU、mem、NFS/iSCSI/FC 中断,执行各种操作。 (提示:硬件自检几乎总是无用的。)
如果其他地方没有提到:
- 周期性趋势
sar
- 磁盘IO
iostat ALL -p ALL
- 磁盘使用情况
df -h
- 网络活动
iftop
- 网络数据包
sudo tcpdump
- 内存
free -lmt
- 内存老化测试:内存测试86+
- 增强顶部
htop
- 内核善良
slabtop
顶部的更漂亮的钥匙:
- 10 次更新/秒d
0.1
enter - 切换 SMP 视图1
- 颜色切换z
- 切换突出显示排序x
- 切换突出显示正在运行的任务y
- 按左下一列排序<(通常为shift+ ,)
- 按右下一列排序>(通常为shift+ .)
- 切换粗体排序shift+b
- 切换粗体b
- 切换排序 asc -> desc shift+r
如果合理预期的话,将重要目录分区到单独的安装点/ /tmp /var /var/log /var/tmp /var/spool /usr /usr/local /opt /home ...
对于避免在未来某个时候关闭系统非常重要。