添加 CPU 会降低 MySQL 5.5 (Debian) 的性能

Gre*_*ake 8 mysql performance debian-wheezy benchmark

我即将在 OpenVZ 容器中设置一个数据库服务器 (MySQL),我一直想知道应该为它分配多少 CPU。我决定对其进行基准测试。我比较了两个 OS/MySQL 发行版,并测试了它们在 1、2、3 和 4 个 CPU 上的表现。

第一个软件配置是:

  • CentOS 6.5 版(最终版)
  • mysql Ver 14.14 Distrib 5.1.71, for redhat-linux-gnu (x86_64) using readline 5.1

第二:

  • Debian GNU/Linux 7 \n \l
  • mysql Ver 14.14 Distrib 5.5.31,用于 debian-linux-gnu (x86_64) 使用 readline 6.2

两者都在同一内核上运行 - 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
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,表的引擎都是 InnoDB。

我正在查看的输出是每秒的事务数。结果相当稳定——误差小于 1%。

CentOS/MySQL5.1 的结果很好,符合预期,但 Debian/MySQL5.5 的结果很奇怪: 在此处输入图片说明

如您所见,Debian 上的 MySQL5.5 无法正确利用多个 CPU。虽然 2 个 CPU 的性能高于 1 个,但明显低于 CentOS/MySQL5.1。此外,当我们在 2 之上添加更多 CPU 时它会下降,这真的很奇怪。

有人可以解释一下那里发生了什么吗?为什么当我们添加 CPU 时,MySQL 的性能会更差?

Tho*_*erk 0

当你添加 CPU 时,它会并行执行更多操作。如果您没有增加 RAM 数量,则可能会发生交换,特别是如果您使用正在测试的软件的较胖(更新通常意味着较胖)版本。