使用Sysbench对MySQL 5.7.21进行并发压测时,MySQL性能较差的解决方法
问题现象描述
使用Sysbench对MySQL 5.7.21进行256并发压测时,x86下TPS为10685,鲲鹏920处理器下压测结果为4197,性能较原有x86环境下有较大差距。
关键过程、根本原因分析
结论、解决方案及效果
通过对MySQL的相关优化,在256并发下,鲲鹏920处理器上TPS达到了11700,优于原x86压测结果(TPS 10685)。
- (可选优化项)修改MySQL源码中CacheLine。
- 修改MySQL数据库配置参数。
- MySQL中主要影响spin_lock相关性能参数的主要有:innodb_thread_concurrency、innodb_spin_wait_delay、innodb_sync_spin_loops。其中nnodb_thread_concurrency推荐设置为CPU的核心数,通过上调innodb_spin_wait_delay和innodb_sync_spin_loops参数,同时使用perf top命令观测MVCC::view_open和PolycyMutex_热点函数使用率,当使用率下降到合理范围内时,即达到预期效果。
- 在高并发压测MySQL时,在x86和鲲鹏920处理器平台上的原子操作实现存在差异,而鲲鹏920处理器的核心数较多,这导致了spin_lock相关系统调用较高的情况。为了解决这个问题,可以通过相应的MySQL参数优化来提高性能。同时,可以结合MySQL相关自旋锁的代码实现来更好地理解这两个参数的作用。关于自旋锁的更多信息,请参见MySQL自旋锁。
父主题: MySQL