与 2.6 相比,MySQL 5.5 在 Linux 内核 3.2 中的性能有所下降

与 2.6 相比,MySQL 5.5 在 Linux 内核 3.2 中的性能有所下降

我们的数据库服务器(主要基于 Debian 稳定软件包(=当前为 Wheezy)似乎有大约 4 倍更多的3.2.0-4-amd64在内核中加载与上一个内核相同的工作负载2.6.32-5-amd64。所有软件包相同且在另一个内核中启动时,我们可以清楚地看到差异,我不知道为什么。问题是,我没有看到那么多 IO 或 CPU 负载差异。

重新设置默认值kernel.sched_min_granularity_nskernel.sched_latency_ns恢复其 2.6.32值会有所帮助(负载增加三倍而不是四倍),但达不到我们想要的水平。由于许多内核设置都发生了变化,我们很难盲目地将新内核设置为旧的默认值2.6

有其他人遇到过这种情况吗?如果有,是什么原因造成的(理想情况下:如何解决)?

由于它与内核深度相关,因此 sysctl 值的差异可能会引起人们的兴趣:这是两者的差异(粘贴以防止问题过长)。

编辑:目前我们正在调查这个答案看看是否适用。

答案1

应避免使用或升级 Linux 内核 3.0 - 3.8,以解决 IO 性能下降问题

Josh Berkus 使用在搭载内核为 3.2.0 的 Ubuntu 12.04 上针对 PostgreSQL 9.3 运行的私人基准测试工作负载演示了 Linux 内核 IO 性能下降。

“……您确实需要避免使用 3.0 和 3.8 之间的每个内核。虽然 RHEL 一直坚持使用 2.6 内核(它们有自己的问题,但没有这个那么严重),但 Ubuntu 已经发布了 12.04 的各种 3.X 内核……升级……到内核 3.13.0,并运行完全相同的工作负载……IO 减少了 80%。我们要感谢 Linux FS/MM 小组的聪明人,他们解决了一大堆性能问题。”

请参见http://www.databasesoup.com/2014/09/why-you-need-to-avoid-linux-kernel-32.html

答案2

我解决了一个问题DBA StackExchange 关于内核和日志。我在 5 月份从 Percona 了解到,某种刷新行为实际上是模拟的。

  • 您可能需要改变日志记录的方式。
  • 您可能需要调整 InnoDB

答案3

也许报告的负载根本不正确,就像在这个错误报告中一样:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=693942

您能看出有什么实际上变慢了吗?或者 vmstat 看起来服务器确实在做更多工作吗?否则我会假设您只是遇到了报告的错误,不久前我也遇到过同样的事情,服务器的性能并没有什么不同,只是输出的平均负载更高。

答案4

当我从使用内核 2.6 和 mysql 5.1 的 debian 迁移到使用内核 3.2 和 mysql 5.5 的 debian 时,我遇到了巨大的 mysql 性能问题(喘息)。

解决 mysql 问题的方法是将 /etc/fstab 中的 barrier=0 改为:https://wiki.archlinux.org/index.php/Ext4

相关内容