![解决 Amazon EC2 上神秘的服务器冻结问题](https://linux22.com/image/568200/%E8%A7%A3%E5%86%B3%20Amazon%20EC2%20%E4%B8%8A%E7%A5%9E%E7%A7%98%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%86%BB%E7%BB%93%E9%97%AE%E9%A2%98.png)
我有一个在 Ubuntu Natty/11.04 上运行 LAMP 的 Amazon EC2 实例。在过去几个月内,有三次(其中两次发生在最近两周内)服务器突然停止运行。它变得无响应,并且停止响应连接尝试(SSH 或其他方式),但 EC2 控制面板仍报告它正在运行。每次我都必须通过控制台重新启动实例,从而导致数据丢失。
所以,现在我试图诊断问题,但一无所获,我需要建议还要检查什么。Syslog 没有任何可疑之处——每次发生的最后一件事是 munin 运行其常规的五分钟 cronjob,尽管由于我不知道机器停止工作的确切时间,我无法说出 cron 日志距离冻结点有多近。在那之后,就好像机器根本没有运行,直到它重新启动,之后 syslog 包含在我看来像正常的 dmesg 输出的内容。
交通量和堵车时间似乎没有关联。每次堵车都发生在交通高峰期之外。
我还能查看什么来尝试找出导致这些问题的原因?问题可能是什么?
附录:服务器在宕机时并未承受任何重负载。CPU 和内存使用量均在限制范围内,且安全。有充足的可用磁盘空间(数十 GB)。Apache 或 MySQL 日志中也没有任何异常,它们只是在那时停止运行。这是一个中/高 CPU 实例。
答案1
您应该做的第一件事是设置一些监控,以便在服务器无响应时通知您。您可以使用 pingdom 和/或 cloudwatch 检查服务正常运行时间和系统统计信息(如 CPU 和 RAM)。两者都为小型帐户提供免费计划。这将使您了解服务器何时出现故障,并应该更容易查找日志以了解当时发生了什么。通常,这种情况可能是由于系统资源不足造成的,您没有提到实例的大小,但像微型计算机这样的实例可能只是通过简单的 cron 作业将 CPU 固定为 100%,此时服务器就会锁定。
还要检查除 syslog 之外的其他日志,检查所有应用程序日志以查看在系统崩溃之前是否有任何日志引发错误。
答案2
可能是主机上的 NIC 有问题。