EC2 实例出现问题,意外断开连接

EC2 实例出现问题,意外断开连接

我的 EC2 实例出现了问题。过去,该实例突然丢失了通过 SSH 和 Web 的连接(Apache 和其他服务器都死机了),我甚至无法 ping 通。但是,当我在 AWS 控制台中转到我的帐户时,状态显示该实例正在运行,没有任何问题,并且已连接到 Web。我真的不知道为什么会发生这种情况,我找到的唯一解决方案是从我的 AWS 帐户的控制台停止该实例几分钟,然后在几分钟后重新启动它。之后,如果我尝试连接到该实例,它就像从未发生过一样工作。

为了避免所有这些问题,我从头创建了一个新实例,并将我的所有项目迁移到新实例。起初一切都运行良好,然后我遇到了 MySQL 错误,查找信息后我发现这是因为没有交换内存。为了解决这个问题,我手动配置了交换内存,它解决了我的 MySQL 问题,但今天早上这个新实例产生了与原始实例相同的错误,完全被切断,AWS 控制台显示实例没有问题的状态。我将其关闭几分钟后再重新打开,问题就解决了。

我为配置交换而执行的命令是这样的:

dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile

将这一行添加到文件 /etc/fstab 之后

/swapfile swap swap defaults 0 0

最后运行这些命令

$ swapon -s   
$ free -m
$ swapoff -a
$ swapon  -a

这个问题是不是由交换内存的变化引起的?这个问题在这个新实例中从未出现过。我应该怎么做才能解决这些问题?

答案1

鉴于您默认此实例没有交换,我将假设您的实例类型为“t1.micro”。微型实例可以在很短的时间内爆发到 2 个 ECU(EC2 计算单元),但分配的平均 CPU 资源较低。在短时间内爆发到高 CPU 水平后,您的 CPU 资源将在之后的一段时间内固定在较低的基线水平。根据您在此期间的工作负载,实例无法联系的情况并不罕见。随着时间的推移,实例应该会再次变得可联系,正如您所观察到的,停止和启动实例也会有所帮助。

有关 t1.micro 实例资源的更多信息,请参见此处:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html

我建议将您的实例类型更改为 m1.small 一段时间以验证上述情况。如果这确实是问题所在,则您需要永久升级您的实例类型,或者考虑运行更轻量级的堆栈,例如 lighttpd 和 sqlite。

相关内容