我需要提高数据库的I / O性能。我正在使用下面描述的“2xlarge”硬件&考虑升级到“4xlarge”HW(http://aws.amazon.com/ec2/instance-types/)。谢谢你的帮助!
详细信息:
CPU使用率很好(通常低于30%),正常运行时间平均负载从0.5到2.0(但我相信我应该把它除以CPU的数量),这样看起来还不错。但是,I / O很糟糕:iostat显示有利的服务时间,但队列中花费的时间(我想这意味着等待访问磁盘)太高了。我已经将MySQL配置为每1秒刷新一次磁盘而不是每次写入,这有所帮助,但还不够。分析表明,有一些表是大多数负载(读取和写入操作)的罪魁祸首。查询已经编入索引&优化但未分区。平均MySQL状态为:发送数据@ 45%,统计数据@ 20%,更新@ 15%,排序结果@ 8%。
问题:
机器:
m2.2xlarge
m2.4xlarge
答案 0 :(得分:1)
根据我的经验,MySQL性能的最大提升来自IO。你有很多RAM。尝试设置一个ram驱动器并将tmpdir指向它。
我有几台非常繁忙的MySQL服务器。我的设置如下 - 也许这可以帮助您调整设置。
我的设置是: -Dual 2.66 CPU 8核心盒,带有6个驱动器的Raid-1E阵列--1.3TB。 -innodblogs在一个单独的SSD驱动器上。 -tmpdir位于2GB的tempfs分区上。 -32GB的ram
InnoDB设置:
innodb_thread_concurrency=16
innodb_buffer_pool_size = 22G
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 400M
innodb_log_files_in_group=8
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2 (This is a slave machine - 1 is not required fo my purposes)
innodb_flush_method=O_DIRECT
每秒当前查询平均值:5185.650
我正在使用Percona Server,这比我测试的其他MySQL要快得多。