我有一个在VPS服务器上运行的wordpress网站,每秒处理大约150个mysql查询。
有时,当我们注意到流量激增到每秒约200个mysql查询时,对站点的https请求是非常慢的。
使用http可以很好地加载站点,但是使用https只需要20+秒。
在峰值后的一个小时内,加载时间逐渐变好,然后又恢复到正常状态。
这里的服务器负载和内存看起来都很好。只有mysql查询、防火墙流量和eth0请求出现峰值。没有mysql慢查询

任何帮助都将不胜感激。
谢谢
发布于 2016-09-08 17:37:11
我认为您的答案在“磁盘延迟”和“磁盘利用率”图表中。
当MySQL可以缓存它需要的所有数据时,它在小负载下工作得很好。但是,当您的结果或查询变得太大,或者您请求过多的结果或查询时,它将开始执行许多磁盘I/O操作。这使您能够处理巨大的负载和非常大的数据,但是当您超出MySQL分配的内存时,您将需要对磁盘进行读写操作。
如果您在本地SSD驱动器上运行,这不会那么糟糕。但是从设备名称可以看出,您正在EBS卷上运行,这不是真正的硬盘驱动器。它是网络驱动器,因此所有流量都会使您的网络连接超载。
您有几个选项:
1.)安装mysqltuner,让服务器运行一段时间,然后运行它,看看它有什么建议。我的猜测是,它会建议您增加MySQL内存池,减少并行连接的数量或重构查询。
2.)使用具有实际本地存储(例如m3或r3)的EC2实例类型,并写入本地固态硬盘。您可以在多个SSD驱动器上进行RAID,以使其速度更快。
3.)使用EBS优化实例(专用EBS网络带宽)和正确的卷类型(某些EBS卷类型具有I/O信用,类似于t型实例的CPU信用,当您运行这些时,您的操作将减慢为爬行)。
https://stackoverflow.com/questions/39384912
复制相似问题