2021-11-05
benchmark跑MySQL,1000仓数据,分别跑了32和100并发,但是发现100并发比32并发还低?
32并发:

100并发:

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
32并发:

100并发:

在官方doc上,对于innodb_thread_concurrency的使用,也给出了一些建议,如下:
1. 如果一个工作负载中,并发用户线程的数量小于64,建议设置innodb_thread_concurrency=0;
2.如果工作负载一直较为严重甚至偶尔达到顶峰,建议先设置innodb_thread_concurrency=128,并通过不断的降低这个参数,96, 80, 64等等,直到发现能够提供最佳性能的线程数,例如,假设系统通常有40到50个用户,但定期的数量增加至60,70,甚至200。你会发现,性能在80个并发用户设置时表现稳定,如果高于这个数,性能反而下降。在这种情况下,建议设置innodb_thread_concurrency参数为80,以避免影响性能。
3. 如果你不希望InnoDB使用的虚拟CPU数量比用户线程使用的虚拟CPU更多(比如20个虚拟CPU),建议通过设置innodb_thread_concurrency 参数为这个值(也可能更低,这取决于性能体现),如果你的目标是将MySQL与其他应用隔离,你可以考虑绑定mysqld进程到专有的虚拟CPU。但是需 要注意的是,这种绑定,在myslqd进程一直不是很忙的情况下,可能会导致非最优的硬件使用率。在这种情况下,你可能会设置mysqld进程绑定的虚拟 CPU,允许其他应用程序使用虚拟CPU的一部分或全部。
4.innodb_thread_concurrency设置的过高,可能增加系统内部和资源的争用,可能导致性能倒退。
5 在某些情况下,最佳的innodb_thread_concurrency参数设置可以比虚拟CPU的数量小。
6.定期检测和分析系统,负载量、用户数或者工作环境的改变可能都需要innodb_thread_concurrency参数的设置进行调整。
innodb_thread_concurrency参数设置的原则,一般等于cpu个数即可,如果不设置的话,当并发量
太高的时候 ,可以会导致mysql 耗尽cpu导致 数据库崩溃!
评论
有用 1
墨值悬赏