【问题标题】:Amazon Linux EC2 Webserver / MYSQL Upgrade – Traffic causing error establishing a database connectionAmazon Linux EC2 Webserver / MYSQL 升级 – 流量导致建立数据库连接时出错
【发布时间】:2014-02-07 11:40:59
【问题描述】:

为了给你一点背景知识,我目前有一个允许用户上传照片的网站。该网站最初位于 GoDaddy 共享服务器上,但最近流量激增迫使我探索其他选择。在高峰时段,该站点包含 400 多个活跃访问者,当与用户上传相结合时,会强制共享服务器关闭。

我在通过 AWS 设置服务器方面有少量经验,并尝试将网站放在 c1.medium 实例 Amazon Linux 上。该网站与 MYSQL 数据库位于同一实例上。虽然我读到这通常是不受欢迎的,但我同样读到将数据库移动到另一个实例不会显着提高速度。不幸的是,c1.medium 实例也无法支持流量,我很快就收到了正在建立数据库连接的错误。该站点有时会加载,因此问题源于流量负载,而不是数据库的实际问题。

我的问题是问题是否仅与 MySQL 有关?备份时数据库本身约为 250MB。问题是由对数据库的输入/输出请求引起的吗?我读过有类似问题的人的帖子,他们说安装 MySQL 5.6 解决了问题,但也读到 MySQL 5.6 比我当前版本的 MySQL 5.5 慢。

在进行了一些初步研究后,我开始相信我可以通过增加 EBS 的 IPOS 来解决这个问题。最初我将 IPOS 设置为标准,但将其更改为预置 IOPS 和 EBS 大小的 30 倍(即 60GB – 1800 IOPS)。这再次似乎没有什么影响。我需要升级我的实例吗?在决定实例时我应该关注哪些措施?具有高网络性能和 EBS 优化的最便宜的实例似乎是 c3.xlarge。建议?

【问题讨论】:

    标签: mysql linux amazon-web-services amazon-ec2 database-performance


    【解决方案1】:

    需要考虑的几件事:

    1)将数据库服务器与网络服务器分开

    您的数据库不应与您的网络服务器共享资源。结果,他们都将表现不佳。 更容易找到瓶颈所在。

    2) 升级到 MySQL 5.6

    在我见过和做过的所有基准测试中,5.6 的表现都优于 5.5

    3) 配置您的数据库以利用您的资源

    根据存储引擎和机器中分配的内存配置 MySQL,例如将 innodb_buffer_pool_size 设置为 (DEDICATED) RAM 的 70%

    4) 监控 MySQL 并查看慢查询日志

    慢查询日志显示查询速度慢且效率低

    5) 学习使用 EXPLAIN

    EXPLAIN 显示 MySQL 中的查询计划在慢查询上运行 EXPLAIN 以调整它们

    6) 使用键值存储来缓存查询

    使用 Memcached 或 Redis 缓存查询,这样它们就不会访问您的数据库并从内存中返回重复的查询

    7) 提高 IOPS 和横向扩展

    提高 IOPS 和获得更好的硬件会有所帮助,但使用高效查询会更有效。大多数情况下,查询和应用程序是导致性能问题的更大因素

    8) 复制

    如果您仍有问题,请考虑迁移到 MySQL 主/从复制。

    最后说明:使用 EBS,因为 EC2 上的存储是短暂的,不会持久。

    【讨论】:

    • 谢谢山姆!看来我还有很多工作要做。
    • @panoramic 没问题。在购买任何新硬件之前先完成前 6 项
    【解决方案2】:

    我们最近对全球客户群中与大量最终用户高峰相关的性能瓶颈进行了广泛研究,分析实际上表明数据库是迄今为止最常见的减速甚至崩溃的原因。该报告 (https://queue-it.com/trend-report) 包含来自我们客户的关于如何改善这种情况的最佳实践建议,您可能会觉得这些建议很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2011-11-11
      • 1970-01-01
      • 2017-06-18
      • 2016-01-15
      相关资源
      最近更新 更多