我正在运行一个 Debian 虚拟服务器,其中有 Apache、PHP、MySQL。只有一个网站在运行,流量非常低,但服务器经常(几乎每天)冻结并且没有响应。
当这种情况发生时,无法通过 Web 浏览器或 SSH 访问服务器,我必须联系提供商的管理部门并执行服务器硬重置,此后服务器似乎工作正常。
我怎样才能找出导致冻结的原因?
Linux vm2797 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux
答案1
重新配置您的系统日志以转到不同的服务器 - 这会推送事件,任何监控都会轮询服务器(除非您在发生重大段错误时立即进行轮询,否则可能会错过重大段错误)。
将日志抓取到崩溃的机器上是一个坏主意——您将始终丢失日志中最重要的行(最后读取的行)。
man rsyslog.conf 提供有关重定向到另一台机器的信息,以及如何配置以监听日志消息。
日志将显示在主机的系统日志中,并以它们来自的服务器的名称开头。
在监听方面,“man rsyslogd”将为您提供启动选项,然后可以在 /etc/default/rsyslog 中设置这些选项(您可能需要 -4 或 -6)。您可以使用 lsof -p pid_of_rsyslogd 验证它是否正在监听
答案2
如果您在 /var/log/syslog 或 /var/log/messages 文件中看不到任何内容,我建议您使用任何系统状态记录工具。我使用 nmon(在捕获数据模式下)来监控我的系统。
你可以找到它这里
答案3
这里要做的是查看日志。它们通常位于 /var/log 中。记下您重新启动系统的时间,并在日志中查找在此时间之前的消息。
/var/log/syslog
/var/log/messages
/var/log/apache2/error.log
/var/log/mysql*
是一个很好的起点。
答案4
- 使用 kdump 内核。
- 让您的 VM-Admin 对您的 VM (包括内存)进行快照,以供取证分析。
- 启用 SysRQ 并让您的 VM/控制台管理员发出同步命令,以便将日志写入磁盘