我已经在 Amazon EC2(新加坡地区)上发布了我的网站,并且我在同一地区使用了 MySQL RDS 介质实例进行数据存储。
就我而言,大多数选择查询都有一些 COUNT 功能。这些查询显示的结果非常缓慢。我已经在表上创建了适当的索引,并检查了 EXPLAIN 命令来分析这些查询。它向我表明,要获得结果,必须进行全表扫描。
在我的 RDS 介质实例上,我使用以下设置配置了自定义参数组。
log_queries_not_using_index = true,
slow_query_log = true,
long_query_time = 2 sec,
max_connections = 303,
innodb_buffer_pool_size = {DBInstanceClassMemory*3/4}
昨天我的 CPU 利用率超过 95%,我的网站因此而崩溃。客流量没有大的增加。
此外,我将数据转储到本地系统上,并测试了其中一个 COUNT 查询。它在 RDS 上运行大约需要 1.5 秒,而在我的本地系统上运行只需要大约 400 毫秒。我的本地系统(4GB RAM,Intel core 2 duo 2.8GHz)上的配置是:
max_connections = 100,
slow_query_log = true,
long_query_time = 2 sec,
innodb_buffer_pool_size = 72351744
那么,导致 CPU 使用率飙升以及 RDS 与我的本地系统之间的性能时间差异的原因可能是什么?
谢谢,