经过几天的研究,我在 c1.medium 实例、Amazon Linux 和 db.m1.medium 实例上放置了一个网站和 MySQL 数据库。 RDS 正在运行 MySQL 版本 5.6.13。我为数据库实例分配了 100 GB,并将提供的 IOPS 设置为 1,000。该网站基于照片,允许用户上传,在高峰时段有 400 多名访问者。
启用慢速查询日志记录后,我发现问题似乎出在 wp_options 表上,在查看 phpmyadmin 时,我发现该表包含有关 WordPress 插件和主题的信息。例如:
设置时间戳=1390186963;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
时间:140120 3:04:17
用户@主机:xxxx ID:744
Query_time:49.248039 Lock_time:0.000180 Rows_sent:485 Rows_examined:538
在试验了一些数据库参数后,我将 query_cache_type 设置为 1,将 query_cache_size 设置为 64MB。我希望启用缓存会阻止数据库重复调用 wp_options 表,但不幸的是,情况似乎并非如此。有什么建议么?下一步要采取什么步骤来找出这个问题的原因?在查看 CloudWatch 指标时,硬件似乎足够了,但也许不够?
以下是两个实例的 CloudWatch 指标的屏幕截图。
EC2:
数据:
最佳答案
除非
Query_time: 49.248039 Lock_time: 0.000180 Rows_sent: 485 Rows_examined: 538
是一个复制/粘贴错误,这里有一些非常非常错误的地方。从 538 行中选择 485 行需要 50 秒!我可以想象,这样做的唯一原因是您在 option_value 中有一些非常长的列,这是一个长文本。尝试
SELECT option_name, length(option_value) FROM wp_options WHERE autoload = 'yes';
检查这里是否出现问题,例如(如您所说的是图片网站)图像或视频文件,其大小必须至少为几十 GB 才能产生您的效果,潜入主题配置。
如果可以,mysqldump() 您的数据库,将转储导入本地数据库,然后在您的本地副本上尝试相同的选择。这可能有助于确定是数据有问题,还是您的 Amazon 实例的某些人为限制设置得太低。
关于MySQL - 慢查询 - wp_options 表。网站无法处理流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318185/