mysql - mysql 查询突然激增后 https 请求变慢

标签 mysql wordpress performance ssl https

我有一个在 VPS 服务器上运行的 wordpress 网站,每秒处理大约 150 个 mysql 查询。

偶尔,当我们注意到每秒约 200 个 mysql 查询的流量激增时,对站点的 https 请求非常慢。

该网站使用 http 加载正常,但使用 https 需要 20 多秒。

在峰值后的一个小时内,加载时间逐渐变好,然后又恢复正常。

服务器负载和内存看起来不错。只有 mysql 查询、防火墙流量和 eth0 请求出现峰值。没有mysql慢查询

Munin server graphs for reference

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

我认为您的答案在“磁盘延迟”和“磁盘利用率”图表中。

当它可以缓存它需要的所有数据时,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/

相关文章:

java - 通过我的桌面应用程序将系统与任何 http 站点的数据库连接

php - apache服务器如何处理对数据库的并发请求

php - 如果php mysql的记录有 'ñ',如何在html中输出?

php - WooCommerce API 不使用 SKU 创建产品

multithreading - 为什么我的斯卡拉 future 没有效率更高?

php - 无法连接到数据库 : Access denied for user '' @'localhost' to database 'socialdb'

wordpress - 如何保护基于 GPL 的应用程序免受未经授权的使用?

iphone - 实现数据库同步的最佳方法是什么?

html - 将同一个 Div 的一个放在另一个的后面?

html - CSS 表格(非固定)是否会遇到与 HTML 表格(非固定)相同的性能问题?