然而同样的吞吐量(总共 16794 * 2 = 33588 tps)的情况下,有95%的响应时间都翻了一倍。这是可以预见的,因为相比于25,000个基准测试连接,我们使用的连接数是原来的两倍。
第三步 75,000连接数
我们将使用3个sysbench服务器来实现75,000个连接,每个服务器上运行25,000个连接。
每个sysbench的运行结果:
第四步 100,000连接数
实现连接数从75k到100k并没有什么大的变化,我们只需要启动一个额外的服务器并启动sysbench就可以了。对于100,000个连接,我们需要四个sysbench服务器,每一个服务器显示:
所以相同吞吐量(总共 8065 * 4 = 32260 tps)时,有95%的相应时间为3405ms。
一个很重要的点是:建立100k个连接并使用线程池,95%的响应时间甚至比不带线程池的10k个连接更快。线程池使得Percona Server更有效的管理资源并提供更快的响应时间。
总结
MySQL实现10万连接数是完全可行的,而且我相信我们还可以更进一步。这里有三个组件可以帮助我们实现目标:
Percona Server的线程池
适当调整网络限制
服务器主机使用多个IP地址(一个IP地址支持大约60k个连接)
附录:my.cnf
英文原文:https://www.percona.com/blog/2019/02/25/mysql-challenge-100k-connections/,
译者:敦伟