【问题标题】:Slow MySQL performance on new Windows 2012 R2 Server新的 Windows 2012 R2 服务器上的 MySQL 性能缓慢
【发布时间】:2014-05-20 15:18:10
【问题描述】:

与两台旧机器相比,我最近构建的一台新机器在 MySQL 性能方面存在非常令人费解的差异。这些机器使用 MySQL 作为基于 IIS 的网络服务器的后端。

所有三个都使用相同的 MySQL 选项(相同的 ini 文件)。 所有人都在运行相同的表......所有 MyISAM。 缓存全部关闭。

最新的服务器 (#3) 生成网页的速度明显比其他服务器慢,我已将问题范围缩小到 MySQL。最新的服务器(#3)在我运行的几乎所有基准测试中都等于或大大超过了其他机器。

似乎只有 mysql 很慢。

起初我怀疑某些特定的查询或配置可能是问题,但即使是最简单的查询也较慢。我一直在使查询变得越来越简单,并且差异仍然存在。无论我运行什么查询,简单或复杂,新服务器(#3)都会慢 2-3 倍,即使没有任何表访问。我什至运行了以下查询,但仍然检测到 2 倍的速度差异:

SELECT 1; 

一个相当简单但不仅仅是一个琐碎查询的例子是:

 SELECT COUNT(*) FROM users WHERE email LIKE '%ab%'

用户有大约 18000 行的电子邮件索引。

此查询在服务器 #1 上大约需要 0.0090 秒。 此查询在服务器 #3 上大约需要 0.0270 秒。

服务器 #3 基本上是空闲的,上面没有运行其他任何东西。我什至还没有安装防病毒软件,其中 #1 处于中等负载状态,而 #2 几乎处于空闲状态。

操作系统当然是不同的,但我没想到在一个应用程序上运行速度更快的机器上的较新操作系统版本上会出现 2-3 倍的性能损失。

我错过了什么????

服务器配置....

服务器 #1(大约 2008-09 年):

  • Intel Core i7 Extreme Edition,3.2 GHz(Nehalem,4 核)
  • 英特尔 DX58SO 主板
  • 6 GB RAM (3 x 2GB)
  • Windows 2008,64 位
  • 2 x Western Digital Black 640GB HD 用于 Raid 1
  • MySQL 5.6.16
  • 连接器 ODBC 5.2

服务器 #2(大约 2010-11 年,进行了一些升级):

  • Intel Core i7,X995 @ 3.6 GHz(Westmere,6 核)
  • 英特尔 DX58SO2 主板
  • 12 GB RAM (3 x 4 GB)
  • Windows 7 专业版,64 位
  • 1 x Intel SSD 480 GB(1-2 年前)
  • MySQL 5.6.16
  • 连接器 ODBC 5.2

服务器 #3 (2013-14):

  • Intel Core i7-4770K @ 3.5 GHz(Broadwell,4 核)
  • 华硕 Z87-WS 主板
  • 16 GB RAM(2 x 8GB,1866)
  • Windows Server 2012 R2,64 位。
  • 2 x Intel SSD DC S3500 160 GB 在 Raid 1 中
  • MySQL 5.6.17
  • 连接器 ODBC 5.2

这是变量的差异(“”代表服务器 3...删除了日志文件和服务器名称差异):

diff Variables.Server1.csv Variables.Server3.csv
18a19
> "block_encryption_mode","aes-128-ecb"
22c23
< "character_set_database","latin1"
---
> "character_set_database","utf8"
29c30
< "collation_database","latin1_swedish_ci"
---
> "collation_database","utf8_general_ci"

99c100
< "innodb_autoextend_increment","1000"
---
> "innodb_autoextend_increment","64"
206c207
< "innodb_version","5.6.16"
---
> "innodb_version","5.6.17"
212c213
< "key_buffer_size","8388608"
---
> "key_buffer_size","268435456"

335c336
< "pseudo_thread_id","12032"
---
> "pseudo_thread_id","4"

430c431
< "timestamp","1396976138.845271"
---
> "timestamp","1396976213.390847"
440c441
< "version","5.6.16"
---
> "version","5.6.17"

【问题讨论】:

  • 你在#3 上试过 MySQL 5.6.16 吗?
  • 是的。我在 12 月开始了这个构建,在那里我第一次注意到了这个问题....在 5.6.17 还没有发布之前。由于时间不够,我不得不暂时搁置努力。从那以后,我定期进行这项工作,但没有运气。我刚刚升级到5.6.17看看有没有效果。
  • 我也刚刚在#3(版本 5.3.2)上尝试了更新版本的连接器。没有变化。
  • 您是否检查过 SHOW VARIABLES 中的差异 - 这可能是一些限制 MySQL 内存使用的默认配置值
  • 添加了变量的差异(删除了日志文件和服务器名称差异)。我没有看到任何我希望有任何影响的差异。

标签: mysql windows performance windows-server-2008 windows-server-2012-r2


【解决方案1】:

我曾经经历过。在 Windows 2012 中,IPv6 是第一优先级。 尝试禁用 IPv6。 从 PowerShell 运行:

c:> New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters -Name DisabledComponents -PropertyType DWord -Value 0xffffffff

然后重启。

在 windows\system32\drivers\etc\host 取消注释 127.0.0.1 localhost。

【讨论】:

  • 您还应该告诉我们您的解决方案的原因和结果。
【解决方案2】:

虽然我还没有尝试过有关 IPv6 的建议,但我已经取得了一些成功....间接的。

几周前,针对 Windows Server 发布了一个补丁/服务包。应用更新后,mysql 神奇地开始执行与旧服务器相似或更好的性能,而不是慢得多。我不完全知道它是什么补丁,因为有好几个,但我注意到立即有了改进。

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多