【问题标题】:What could be causing seemingly random AWS EC2 server to Crash? (Error couldn't establish database connection)什么可能导致看似随机的 AWS EC2 服务器崩溃? (错误无法建立数据库连接)
【发布时间】:2014-04-11 07:50:02
【问题描述】:

首先,我在 AWS EC2 Ubuntu Micro 实例上运行一个 Wordpress 站点。我已经确认这不是 Wordpress/mysql 的错误。

该站点似乎会随机关闭,并且我会收到“建立数据库连接时出错”消息。服务器说它运行得很好,并且重新启动通常可以解决问题,但是我想找出原因并解决问题,这样就可以停止发生(过去 2 周过去了,它几乎每隔其他日子。)

这不是流量高峰,或者至少 Google Analytics 没有显示该网站有任何流量高峰(平均每天大约 300 次访问。)

如果我能就可能是什么原因以及研究什么来解决它得到任何指导,我将非常感谢您的帮助。

谢谢!

【问题讨论】:

    标签: ubuntu amazon-web-services amazon-ec2 amazon


    【解决方案1】:

    下次发生这种情况时,我会检查有关实例运行状况的一些常规统计信息。您可以使用“top”命令 (http://linuxaria.com/howto/understanding-the-top-command-on-linux?lang=en) 了解实例的高级运行状况。请务必查看 CPU 和内存使用情况。您可能会发现一个进程 (pid) 会消耗大量资源并使您的应用处于饥饿状态。

    更有可能的是,您的应用程序中的某些东西(您是如何得出这不是 Wordpress/MySQL 问题的结论的?)正在失控。可能有一个数据库连接没有被释放?要查看您的应用在做什么,请找到您的应用的进程 ID (pid):

    ps aux | grep "php"
    

    并获取该进程的线程转储:kill -3 to get java thread dump。这将帮助您查看应用程序的线程卡在哪里(如果有的话)。

    通常情况下,间隔几秒钟执行两个线程转储并比较两者的趋势是一种很好的做法。如果应用程序出现问题,您应该会看到很多线程卡在同一点。

    您可能还想查看 MySQL 看到的内容 (https://dev.mysql.com/doc/refman/5.1/en/show-processlist.html)。

    mysql> SHOW FULL PROCESSLIST
    

    希望这会有所帮助,让我们知道您的发现!

    【讨论】:

    • 首先,非常感谢您的快速回复!我会检查你建议的事情。我确实想快速回复,只是为了澄清 Wordpress 的问题——有很多地方可能会出错,我想我应该更好地表达它。当我在谷歌上搜索这个问题时,很多人的回复都说要检查 wp-config.php 文件。我已经做到了,这很好。每当错误发生时,重启实例总是会修复它一段时间。该网站在前两个月运行良好,然后突然之间就这样了。
    • 好的,是时候做出适当的回应了。根据 Cloudwatch 的说法,一切都是“健康的”(即使网站关闭了)。我无法访问内存使用情况,因为我一直在努力尝试将其添加到 Cloudwatch 中。 CPU 使用率通常在 10-20% 左右,偶尔会达到 40-60%。很少会一直达到 100%。通常停机时间会在峰值达到 40-60% 之后发生,而 I know 暂时解决问题的唯一方法是重新启动实例(然后它就可以改天再发生。)
    • 所以对于线程转储...我不知道如何阅读。 :\ 另外,它应该在崩溃期间运行还是可以随时运行?我想这些问题中的大多数也适用于 MySQL。虽然,我现在也不知道如何检查 MySQL 进程列表。另外,我终于能够在 CloudWatch 中获取要报告的内存数据,但是我必须创建一个新实例。所以在这方面我认为这是一个观望。
    • @cw02 你解决过这个问题吗? 2019 年我也会经历同样的事情。
    • @DanteCullari 不幸的是,我没有。我最终完全切换到 Digital Ocean,因为它们可以让您拥有与 AWS 相同的控制量,但拥有更好的平台和技术支持。
    【解决方案2】:

    听起来您可能会遇到限制,这是 t1.micro 的限制。如果您使用过多的 CPU 周期,您将受到限制。

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html#available-cpu-resources-during-spikes

    【讨论】:

    • 我调查了这个,它实际上有点奇怪,我不确定这是否是这样。该站点的 CPU 使用率通常在 10-20% 左右,偶尔会达到 40-60%,有一次或两次达到 100%。但是,截止(下降到 1% 的使用率)总是在使用 40-50% 左右之后发生。奇怪的是,我们达到 100% 使用率的两次服务器似乎没有受到限制。难道是微实例不允许使用超过 60% 的 CPU?我想这需要更多的谷歌搜索。谢谢你。 :)
    • 我还应该补充一点,实例总是报告为“健康”。它会在受到限制的情况下这样做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多