簡體   English   中英

新的 Windows 2012 R2 服務器上的 MySQL 性能緩慢

[英]Slow MySQL performance on new Windows 2012 R2 Server

與兩台舊機器相比,我最近建造的一台新機器在 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 年):

  • 英特爾酷睿 i7 至尊版,3.2 GHz(Nehalem,4 核)
  • 英特爾DX58SO主板
  • 6 GB 內存 (3 x 2GB)
  • 視窗 2008,64 位
  • 2 x Western Digital Black 640GB HD in Raid 1
  • MySQL 5.6.16
  • 連接器 ODBC 5.2

服務器 #2(大約 2010-11,有一些升級):

  • 英特爾酷睿 i7、X995 @ 3.6 GHz(Westmere,6 核)
  • Intel DX58SO2 主板
  • 12 GB 內存(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):

  • 英特爾酷睿 i7-4770K @ 3.5 GHz(Broadwell,4 核)
  • 華碩 Z87-WS 主板
  • 16 GB 內存(2 x 8GB,1866)
  • Windows Server 2012 R2,64 位。
  • 2 x Intel SSD DC S3500 160 GB in Raid 1
  • MySQL 5.6.17
  • 連接器 ODBC 5.2

這是變量的差異(“<”代表服務器 1,其中“>”代表服務器 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"

我曾經經歷過。 在 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。

雖然我還沒有嘗試過關於 IPv6 的建議,但我已經取得了一些成功......間接的。

幾周前,針對 Windows Server 發布了補丁/服務包。 應用更新后,mysql 神奇地開始執行與舊服務器相似或更好的性能,而不是慢得多。 我不完全知道它是什么補丁,因為有幾個補丁,但我注意到立即改進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM