只运行一个MySql 5.7.30实例的服务器平均消耗大约25%的CPU,连接了100多个线程,其中一般有15-25个线程。服务器中的CPU有8个核心/16个线程,CPU上的负载似乎很好地分布在所有内核/线程上。
现在已经向服务器添加了第二个相同的CPU,但是我们注意到,第二个CPU没有在其任何核心/线程上得到任何负载。有什么设置我需要调整,告诉MySql使用这两个CPU的?
下面是机器上my.ini的一些设置:
default-storage-engine=INNODB
log-output=FILE
table_open_cache=2000
thread_cache_size=10
myisam_max_sort_file_size=100G
read_buffer_size=64K
read_rnd_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
open_files_limit=4161
table_definition_cache=1400
binlog_row_event_max_size=8K
max_connections=301
tmp_table_size=6G
myisam_sort_buffer_size=12G
key_buffer_size=11M
innodb_buffer_pool_size=20G
innodb_log_file_size=2G
innodb_thread_concurrency=33
innodb_open_files=2000
join_buffer_size=4M
max_allowed_packet=32M
sort_buffer_size=512K
event-scheduler=ON
max_heap_table_size=32M
query_cache_type=1发布于 2020-07-06 18:49:26
在MySQL中,一个连接使用一个CPU核心。句号。讨论结束。
好吧..。
平均约占CPU的25%
是的,MySQL在执行写得很好、索引很好的查询方面非常快。因此,成千上万的qps可能只使用CPU的一小部分。在MySQL系统中,CPU很少是限制因素。当它是,通常添加一个综合索引“修复”它。
分布在所有核心/线程上
这取决于操作系统。请注意,每个连接都位于一个“线程”(或“进程”)中,并由操作系统将CPU核心分配给线程。
如果平均一个CPU的25%,操作系统很少有一个好的理由唤醒另一个CPU。现在我们开始深入到硬件的血淋淋的细节-- NUMA,亲和力等等,可能是功耗,非均匀内存访问等等。
即使您让它同时使用这两个CPU(每个CPU的速度约为12.5% ),用户也可能看不到延迟方面的任何改善。
多线程:
真正的目标是什么?
通过改进查询,这两种方法都可能有所帮助。打开慢速日志;使用pt-查询摘要;然后让我们讨论最糟糕的查询。
https://dba.stackexchange.com/questions/270451
复制相似问题