网络是数据库基础架构的主要部分。但是,通常情况下,性能基准测试是在客户端和服务器并置的本地计算机上完成的-我自己也对此感到内疚。这样做是为了简化设置并排除另外一个变量(网络部分),但有了这个,我们也错过了看网络如何影响性能。
对于像PerconaXtraDBCluster和MySQLGroupReplication这样的产品集群来说,网络更为重要。此外,我们正在为Kubernetes和OpenShift开发PerconaXtraDB集群运算符,其中网络性能对整体性能至关重要。
在这篇文章中,我将介绍网络设置。这些都是简单而微不足道的,但它是了解更复杂设置的网络效果的基石。
建立
我将使用两个通过专用10Gb网络连接的裸机服务器。我将通过
ethtool-seth1speedduplexfullautonegoff
命令更改网络接口速度来模拟1Gb网络。
我将运行一个简单的基准:
sysbencholtp_read_only--mysql-ssl=on--mysql-host=.16.0.1--tables=20--table-size=0000--mysql-user=sbtest--mysql-password=sbtest--threads=i--time=--report-interval=1--rand-type=pareto
运行时线程数从1到不等。所有数据都适合内存-innodb_buffer_pool_size足够大-因此工作负载在内存中占用大量CPU:没有IO开销。
操作系统:Ubuntu16.04
基准N1。网络带宽
在第一次实验中,我将比较1Gb网络和10Gb网络。
显然,1Gb网络性能是这里的瓶颈,如果我们迁移到10Gb网络,我们可以显着改善我们的结果。
要查看1Gb网络是瓶颈,我们可以检查PMM中的网络流量图表:
我们可以看到我们的吞吐量达到了MiB/秒(或Mb/秒),这非常接近网络带宽。
但是,如果我们的网络基础设施仅限于1Gb,我们可以做些什么?
基准N2。协议压缩
MySQL协议中有一个功能,您可以在其中看到客户端和服务器之间的网络交换压缩:
--mysql-