为了给你一点背景,我目前有一个网站,允许用户上传照片。该网站最初是在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。建议?
答案 0 :(得分:2)
需要考虑的几件事情:
1)将数据库服务器与Web服务器分开
您的数据库不应与您的网络服务器共享资源。结果他们都表现不佳。 更容易找到瓶颈是什么。
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上的存储空间不大,不会持久存在。
答案 1 :(得分:0)
我们最近对与全球客户群中的大量最终用户峰值相关的性能瓶颈进行了广泛的研究,分析实际上表明数据库是 - 到目前为止 - 最常见的减速甚至崩溃的原因。报告(https://queue-it.com/trend-report)包括客户关于如何改善情况的最佳实践建议,您可能会发现这些建议很有帮助。