我有一个在VPS服务器上运行的wordpress网站,每秒处理大约150个mysql查询。
当我们注意到大约200个mysql查询的流量达到一秒时,对网站的https请求非常缓慢。
该网站使用http加载得体,但使用https则需要20秒以上。
在加速后的一个小时内逐渐加载,加载时间变得更好,然后再次恢复正常。
服务器负载和内存看起来很好。 mysql查询,防火墙流量和eth0请求只有一个峰值。没有mysql慢查询
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:0)
我认为你的答案是“磁盘延迟”和“磁盘利用率”图表。
MySQL可以在小负载下很好地工作,因为它可以缓存所需的所有数据。但是当您的结果或查询过大或者请求过多时,它将开始执行许多磁盘I / O操作。这使您可以处理大量负载和非常大的数据,但是当您超过MySQL分配的内存时,您将需要读取和写入磁盘上的所有内容。
如果您在本地SSD驱动器上运行,这不会太糟糕。但是从设备名称我发现你在EBS卷上运行,这不是真正的硬盘。它是网络驱动器,因此所有流量都会使网络连接过载。
您有几种选择:
1。)安装mysqltuner
,让服务器运行一段时间,然后运行它,看看它的建议。我的猜测是,它会建议你增加你的MySQL内存池,减少并行连接数或重构你的查询。
2.)将EC2实例类型与实际本地存储(例如m3或r3)一起使用并写入本地SSD。您可以在多个SSD驱动器上执行RAID,以使其更快。
3.)使用EBS优化实例(专用EBS网络带宽)和正确的卷类型(某些EBS卷类型具有I / O信用,类似于t类型实例的CPU信用,当您运行这些时,您的操作会慢下来爬行。)