![Amazon Linux EC2 Web 服务器/MYSQL 升级 – 流量导致建立数据库连接时出错](https://linux22.com/image/624907/Amazon%20Linux%20EC2%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%2FMYSQL%20%E5%8D%87%E7%BA%A7%20%E2%80%93%20%E6%B5%81%E9%87%8F%E5%AF%BC%E8%87%B4%E5%BB%BA%E7%AB%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%97%B6%E5%87%BA%E9%94%99.png)
先介绍一下背景情况,我目前有一个允许用户上传照片的网站。该网站最初在 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 和 30 倍的 EBS 大小(即 60GB – 1800 IOPS)。这再次似乎没有产生太大影响。我需要升级我的实例吗?在决定实例时我应该关注哪些措施?看来,具有高网络性能和 EBS 优化的最便宜的实例是 c3.xlarge。有什么建议吗?
答案1
建立数据库连接。
您需要确定问题出在哪里:
- 数据库是否过于繁忙?——为什么?(CPU、磁盘、内存)
- 网络服务器是否已超负荷?
目前还不清楚如何解决。你需要更接近核心问题。这将指导下一步。
最好的方法是根据需要重现问题,这样您就可以检查潜在的问题区域。
答案2
最好的方法是使用两台服务器。我会找到一个支持虚拟主机之间内部联网的提供商,这样流量就不会从 A 路由到互联网,然后再路由回 B 。
亚马逊是大型供应商,但最终您当前的方法无法满足您的需求。
其他发帖者关于 mysql 和 webserver 如何争夺资源的说法完全正确。我立刻想到的可能是您的应用程序没有正确关闭连接。
答案3
我会查看 MySQL 设置。根据我的经验,迄今为止我使用的所有发行版上的标准 my.conf (/etc/mysql) 都远未针对您的工作进行优化。我自己在 Amazon 上拥有大量峰值负载的网络服务器,我只能建议您修改 my.conf。我在 m1.large 上的设置:key_buffer = 8G(默认 384 MB)。同时增加 query_cache_limit 和 query_cache_size。