我有一个 Amazon Linux 实例,上面只运行着 Wordpress(使用 Amazon 指南安装)。一段时间后(我不知道具体多长时间,至少几个小时),该实例既无法通过 HTTP 访问(一直尝试打开网站),也无法通过 SSH 访问(消息:ssh_exchange_identification:已读:对等方重置连接)。
当我登录控制台时,我看到灯是绿色的,一切似乎都正常。即使重新启动实例也无济于事。唯一的解决办法是停止实例并重新开始,然后整个循环再次开始:工作几个小时,然后突然不工作了。
也许有必要提一下,我已经购买了与我的 EC2 实例匹配的预留 Linux 实例。所以我正在使用它。有什么想法可以帮助我解决这个问题吗?
更新:我对我的实例做了快照并将其放在新卷上,但这也不能解决问题。
当前安全组(入站):
- 无处不在的 HTTP 和 HTTPS
- 仅从我的 IP 进行 SSH
我检查了 httpd 文件夹中的 access_log,发现它只包含很少几行,其中有几行是奇怪的俄罗斯网站(有时)。这很奇怪,因为我的网站并未正式上线,而且任何地方都找不到它的链接。
答案1
我认为您的服务器或磁盘已损坏,需要完全更换。以下是我会做的事情
第一的你可以选择方法
- 在 EC2 上设置新的 Ubuntu 16.04 Linux 服务器。有一个 AMI,所以很容易。我发现 Amazon Linux 的支持较少,可用的软件包也比 Ubuntu 少。使用易引擎或类似方法使其更简单。
- 使用预制的 Wordpress AMI,例如比特纳米。我认为他们仍在使用 Ubuntu 14.04,但您可以轻松升级到 16.04。
另一个选择是在实例上使用 RDS 或 MySQL。我在实例上使用 MySQL,因为它更便宜,而且运行良好。
下一个
- 如果您没有使用预制 AMI,请设置您的实例以运行 Wordpress。在继续之前,请检查基本安装是否正常。
- 从原始服务器执行 MySQL 转储,然后将数据导入数据库。
- 将数据复制到新服务器。这将是 wp-content 目录。
- 为了使其正常工作,需要进行一些调整和改进。
如果结果不可靠,则可能是您的数据库出了问题。通过 XML 导出您的帖子和内容,然后导入。如果这是必要的,我会感到惊讶。
杂项
回答你上面的问题,只对你自己IP开放SSH。
答案2
我也遇到了同样的问题,但没有你说的那么频繁。
在我的情况下,服务器由于内存不足而无响应,而这并没有受到 Amazon AWS 控制台的监控,
某些 cron 作业无法执行 fork。
在停止-启动后检查你的 cron 日志是很好的,你可能会看到这一行
crond[2656]: (CRON) can't fork (do_command): Cannot allocate memory
为了进一步避免此类问题,AWS Support 建议我使用更大的实例或设置交换文件以及设置第三方警报
答案3
在控制台的设置下,您应该会找到一个小的“控制台快照”选项,它将对原始控制台输出进行“拍照”。
我敢打赌,该实例崩溃了,现在它处于某种恢复状态。
这种情况时有发生。如果你认为 AWS 的弹性是 EC2 的 7 个 9,那么你应该可以预料到每 20 分钟就会有一个实例(某个实例、某个地方)发生故障。