我刚刚阅读了这个旧的问答,其中有一些与我们类似的设置非常详细的信息,不幸的是我们的问题(现在)不是复制。
MySQL复制性能
我们有一个新的master数据库服务器(服务器版本: 5.5.27 -log MySQL社区服务器),在裸机服务器上有以下规格:
HyperThreading在服务器上没有被禁用,因为对这是否对大内存系统有帮助有不同的看法,但我们并不反对尝试它。
我们目前正在复制到在SSD集群上虚拟化的3个从站。 我们正在复制到4,但这对于SSD集群来说似乎太多了,我们有一段时间的滞后。
所有的表都是InnoDB,master DB和slave Writer都在3.5K到2.5K之间,而master上的读取大约是7.5k到10k qps 。
主数据库的设置如下所示:
long-query-time=10 slow-query-log max_connections=500 max_tmp_tables=1024 key_buffer = 1024M max_allowed_packet = 32M net_read_timeout=180 net_write_timeout=180 table_cache = 512 thread_cache = 32 thread_concurrency = 4 query_cache_type = 0 query_cache_size = 0M innodb_file_per_table innodb_file_format=barracuda innodb_buffer_pool_size=49152M innodb_buffer_pool_instances=2 innodb_read_io_threads=16 innodb_write_io_threads=16 innodb_io_capacity = 500 innodb_additional_mem_pool_size=20M innodb_log_file_size=1024M innodb_log_files_in_group = 2 innodb_doublewrite=0 innodb_flush_log_at_trx_commit=2 innodb_flush_method=O_DIRECT
我们的问题是与CPU负载,尤其是系统Cpu。 从mpstat中可以看到,我们有0%的iowait和非常高的%sys。
Linux 2.6.32-431.29.2.el6.x86_64 13/11/14 _x86_64_ (24 CPU) 13:57:18 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 13:57:19 all 23.35 0.00 74.65 0.00 0.00 0.88 0.00 0.00 1.13 13:57:20 all 21.95 0.00 75.50 0.00 0.00 0.96 0.00 0.00 1.59 13:57:21 all 23.74 0.00 72.63 0.00 0.00 1.00 0.00 0.00 2.63 13:57:22 all 23.88 0.00 71.64 0.00 0.00 1.17 0.00 0.00 3.31 13:57:23 all 23.26 0.00 73.89 0.00 0.00 0.92 0.00 0.00 1.92 13:57:24 all 22.87 0.00 74.87 0.00 0.00 1.00 0.00 0.00 1.25 13:57:25 all 23.41 0.00 74.51 0.00 0.00 0.96 0.00 0.00 1.12
以前,主数据库在虚拟化服务器(与从服务器相同的SSD群集)上运行。 它在vSphere群集中拥有一台主机,其中包含:
以前从来没有任何问题,服务器运行多年没有错误,尽pipeSQL吞吐量较低。
查询都很简单,并且索引已针对插入和更新进行了优化,因为在从站上执行复杂的客户端查询。 没有删除,只有插入和更新。 大多数表(都是大的表)都有主键。
一旦内存缓冲区已满,CPU使用率似乎会增加,MySql是在服务器上运行的唯一应用程序。
连接范围从大约200-400与大约100-200的那些运行。 Innodb缓冲液池命中率为100%。 没有创build交换内存,所以我不能看到这是问题:
http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
我们有很多New Relic的历史,但不幸的是我不能在这里粘贴截图。
我已经经历了无数的博客和Q&A这样,但无法find任何原因或解决scheme,所以我把它放在那里..任何想法?
UPDATE
看来我现在可以发布截图了。 New relic的这两个捕获在6小时窗口显示服务器上的系统负载和查询负载,中间重启mysql。


InnoDB和FusionIO分别是非常积极的CPU,但更是如此。
我有这个老post
Aug 25, 2013 : MySQL / Fusion IOconfiguration问题 Jun 19, 2013 : MySQL使用太多的CPU 这里的关键是在调整InnoDB时稍微宽松些。
您需要select以下一个或多个build议: