我即将在OpenVZ容器中设置数据库服务器(MySQL),我一直在想应该为它分配多少CPU。我决定进行基准测试。我比较了两个OS / MySQL发行版,并测试了它们在1、2、3和4个CPU上的性能。
第一个软件配置是:
- CentOS版本6.5(最终版)
- 适用于redhat-linux-gnu(x86_64)的mysql Ver 14.14 Distrib 5.1.71,使用readline 5.1
第二:
- Debian GNU / Linux 7 \ n \ l
- 适用于使用readline 6.2的debian-linux-gnu(x86_64)的mysql Ver 14.14 Distrib 5.5.31
两者都在同一内核上运行-2.6.32-openvz-042stab083.2-amd64#1 SMP Fri Nov 8 17:59:25 MSK 2013 x86_64 GNU / Linux。
所有软件都是从软件包中安装的,并且可以直接使用,而无需进行任何自定义配置调整。
硬件:6GB RAM,1-4个CPU 3.5 GHz。
为了进行基准测试,我在以下情况下使用了sysbench:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
在这两种情况下,表的引擎都是InnoDB。
我正在查看的输出是每秒的事务数。结果非常稳定-误差小于1%。
结果不错,对于CentOS / MySQL5.1来说是预期的,但对于Debian / MySQL5.5来说却很奇怪:
如您所见,Debian上的MySQL5.5无法正确利用多个CPU。虽然2个CPU的性能高于1个CPU,但明显低于CentOS / MySQL5.1。而且,当我们在2个CPU之上添加更多CPU时,它会下降,这确实很奇怪。
有人可以解释一下发生了什么吗?为什么在地球上添加CPU时MySQL的性能会变差?