【问题标题】:Mysql on EC2 instance: slow results after the first queryEC2实例上的Mysql:第一次查询后结果很慢
【发布时间】:2012-04-17 12:34:28
【问题描述】:

我正在尝试在具有 613MB 内存的 Amazon EC2 微型实例上配置 mysql。这个实例将只用于运行 mysql,所以我想使用尽可能多的内存。我们在不同的主机上运行了同一数据库的另一个实例,因此我可以轻松比较结果。

对原始数据库执行普通查询不到 3 秒。在我对 EC2 进行更改之前,需要 46 秒,但现在,更改设置后,相同的查询只需要 4 秒。但是,再次执行相同的查询,似乎需要很长时间。

这是我在 MySql my.cnf 中使用的设置:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

innodb_buffer_pool_size = 128M
query_cache_size = 128M
query_cache_limit = 8M
key_buffer_size = 128M

table_open_cache = 2048
table_definition_cache = 2048
read_buffer_size = 64M
join_buffer_size = 64M
sort_buffer_size = 64M
myisam_sort_buffer_size = 64M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我不认为应该包含 myisam 参数,因为它应该都使用 innodb,但我只是给了它一些额外的内存以防万一。

如果它在第一次运行时较慢,然后运行得更快,这将是合乎逻辑的,但这似乎不合逻辑。

欢迎提出任何想法。

【问题讨论】:

    标签: mysql performance caching buffer my.cnf


    【解决方案1】:

    EC2 micro 的性能通常很糟糕。您可以以相同的价格获得 Linode/Rackspace。

    【讨论】:

    • 我知道 EC2 micro 不是那么好,但我必须使用我老板提供的东西 ;-) 无论如何,这不应该是第一次查询很快并采取的原因当您第二次运行它而数据库中没有其他任何更改时,时间会更长。如果有的话,查询缓存应该让它更快。
    【解决方案2】:

    Amazon Micro 实例“在有额外周期可用时,可能会在短时间内增加 CPU 容量。”

    这意味着您被分配了 X 个计算单元,但是当其他 Micro 实例没有使用它们的分配时,它可以跳转到 X + N,并且您的实例会自动清除它。

    这可能就是您看到性能波动的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      相关资源
      最近更新 更多