我有一个在 VPS 服务器上运行的 wordpress 网站,每秒处理大约 150 个 mysql 查询。
偶尔,当我们注意到每秒约 200 个 mysql 查询的流量激增时,对站点的 https 请求非常慢。
该网站使用 http 加载正常,但使用 https 需要 20 多秒。
在峰值后的一个小时内,加载时间逐渐变好,然后又恢复正常。
服务器负载和内存看起来不错。只有 mysql 查询、防火墙流量和 eth0 请求出现峰值。没有mysql慢查询
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
我认为您的答案在“磁盘延迟”和“磁盘利用率”图表中。
当它可以缓存它需要的所有数据时,MySQL 在小负载下运行良好。但是当你的结果或查询变得太大,或者你请求的太多时,它就会开始做很多磁盘 I/O 操作。这使您能够处理巨大的负载和非常大的数据,但是当您超出 MySQL 分配的内存时,您将需要将所有内容读写到磁盘。
如果您在本地 SSD 驱动器上运行,情况还不错。但是从设备名称我看到你在 EBS 卷上运行,这不是一个真正的硬盘驱动器。它是网络驱动器,因此所有流量都会使您的网络连接过载。
您有多种选择:
1.) 安装mysqltuner
,让服务器运行一段时间,然后运行它,看看有什么提示。我的猜测是,它会建议您增加 MySQL 内存池、减少并行连接数或重组查询。
2.) 使用具有实际本地存储(例如 m3 或 r3)的 EC2 实例类型并写入本地 SSD。您可以在多个 SSD 驱动器上进行 RAID 以使其更快。
3.) 使用 EBS 优化实例(专用 EBS 网络带宽)和正确的卷类型(某些 EBS 卷类型具有 I/O 积分,类似于 t 型实例的 CPU 积分,当您运行这些实例时,您的操作会减慢爬行速度)。
关于mysql - mysql 查询突然激增后 https 请求变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384912/