gpt4 book ai didi

mysql - thread_cache_size 减少 CPU 和最大连接?

转载 作者:可可西里 更新时间:2023-11-01 06:34:04 24 4
gpt4 key购买 nike

最近发现我的 MySQL 服务器在模拟 100-500 线程并发请求时达到 90% 的高 CPU 利用率

使用默认设置并在 my.cnf 中添加以下内容

max_connections = 500max_allowed_packet = 16M

我注意到 max_connection 可以达到 500,threads_created 也可以达到 200-500,我认为这实际上导致了异常高的 CPU

因此我调整了默认设置而不是使用默认设置

innodb_buffer_pool_size = 2G #32bit linux serverinnodb_log_file_size = 256Minnodb_log_buffer_size = 8Minnodb_thread_concurrency = 16innodb_flush_method = O_DIRECTinnodb_additional_mem_pool_size = 20Mtable_cache = 1028thread_cache_size = 16key_buffer_size=32Mquery_cache_size=32Mjoin_buffer_size=1M

同样的负载测试,CPU 下降到 10% 及以下......但是我注意到 max_connection 再也不会达到 500。现在不到50...

是不是我调整了thread_cache_size导致的?默认为 0。还是某处有问题...我想知道在这种情况下是否使用最大连接正确测试了 mysql 服务器。我想测试并发线程是否可以达到 max_connections 但不知何故它从未达到我之前测试过的相同数量。自更改以来,它现在从未超过 50。

有什么想法吗?

最佳答案

创建新线程(因为我猜你的应用程序不使用连接池)需要相当多的开销。随着 MySQL 以这种方式重用线程(最多 16 个),它不再经常使用额外的 CPU 来创建线程,并且它也可能及时完成操作,因此更快地关闭连接并因此保持一次打开的连接更少。

只是一个猜测:-)

关于mysql - thread_cache_size 减少 CPU 和最大连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8665233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com