請教站上前輩,我有一台網站伺服器,
工作單純,Windows Server + IIS + MS-SQL
近日試著組了另一台主機(洋垃圾),跑一模一樣的Web程式,結果,執行相同的動作,新組的(洋垃圾)竟然跑比較慢,請問是不是哪裡需要調整呢?
升級前舊主機規格
主機板:ASUS
處理器:Xeon E3-1220V3x1(3.1GHz) 4核4緒
記憶體:DDR3x16G
硬碟機:SATA 2.5吋 SSD
作業系統:Windows Server 2016 Std.+IIS
資料庫:MS-SQL 2014
升級後(洋垃圾)主機規格
主機板:SuperMicro H11DSi
處理器:AMD EPYC 7551x2(2.0GHz) 64核128緒
記憶體:DDR4x128G
硬碟機:M.2 轉 PCIE SSD
作業系統:Windows Server 2025 Std.+IIS
資料庫:MS-SQL 2014
不是硬體算力不夠,而是「老軟體 + 相容性設定」讓 128 顆核心的怪獸只發揮了一點點。
主要瓶頸出在:
1) 新機的單核心效能較差
2) SQL Server 2014 對超多核心/NUMA 的支援有限
3) 電源與 BIOS 預設值保守。
https://chatgpt.com/share/6875234c-b96c-8002-b553-e88034ddf47b
先把 SQL 實體核心縮到 8 ~ 12 個、開 MAXDOP = 4、電源計畫改 High Performance,通常就能比舊機快 20-30 %。
真要吃滿 128 緒,務必升級到 SQL 2019 或更新版,否則傳統 OLTP 工作負載會被: 上下文切換(Context Switching)與 NUMA 記憶體來回搬資料的耗損給「稀釋」掉。
這是典型: 軟體工程師不瞭解硬體架構, 造成的選擇錯誤. 但不見得要將此歸因於你, 因為技能樹的分支, 是從學校科系就已經開始了, 不是出社會後可以追上的.
如果你是: 只有幾隻貓的新創/公司裡的一條龍/從DevOps頭做到尾的全端, 多了解以上這些硬體架構, 當然會提升你的產能, 但相對---你也要付出非常多的時間和學習, 尤其大部分軟體工程師並未充分學習過 x86 的硬體特性, 上手要花很多時間.
但如果是: 分工精細的多人團隊 (通常要百人以上), 有充足編制的跨國上市公司, 通常這個工作會是落在: 部署和維運團隊的系統架構師的身上, 他們會先去了解你的軟體組成, 再幫你選出合適的硬體, 避免你自己亂配出現問題. 開發團隊專心寫程式就可以, 不需要管到這麼底層的硬體技術.
部署和維運團隊的系統架構師,主要負責: 設計、規劃和維護資訊系統的架構,確保系統的穩定、高效和可擴展性,同時也需要考慮到部署和維運的需求,讓系統在部署後能順利運作,並能方便地進行維護和管理。
系統架構設計:
根據業務需求和技術標準,設計符合系統架構的整體方案,包括技術選型、組件選擇、數據流設計等。
部署規劃:
制定系統部署方案,包括部署環境、部署流程、版本控制等,確保系統能順利部署到生產環境。
運維策略:
規劃系統的監控、告警、日誌、備份、災難恢復等運維策略,確保系統的穩定運行。
效能優化:
分析系統效能瓶頸,並提出優化方案,提升系統的執行效率。
安全性設計:
考慮系統的安全性需求,設計安全策略,保護系統免受攻擊。
技術支援:
為部署和維運團隊提供技術支援,解決系統運行過程中遇到的問題。
技術研究:
關注最新的技術發展,研究適用於系統的技術方案,並不斷優化系統架構。
vs 開發團隊:
系統架構師需要與開發團隊緊密合作,確保系統的開發符合架構設計,並及時解決開發過程中遇到的問題。
vs 測試團隊:
系統架構師需要與測試團隊合作,確保系統的質量,並根據測試結果進行優化。
vs 維運團隊:
系統架構師需要與維運團隊合作,確保系統的穩定運行,並協助解決運行過程中遇到的問題。
vs 產品團隊:
系統架構師需要與產品團隊合作,了解業務需求,並將其轉化為技術方案。
其實在你原本的規格中就已經透露出一些答案
Xeon E3-1220V3x1(3.1GHz) 4核4緒
AMD EPYC 7551x2(2.0GHz) 64核128緒
舊CPU雖然只有E3 V3 但卻是3.1G時脈
而新CPU卻只有2G
在CPU Benchmark 網站中
CPU Benchmark
很明確的標示 EPYC雖然"總"分快了4倍多 (5171 vs 25606)
但是在"單"核領域上卻反而慢13% (1948 vs 1688)
所以比較慢是必然的 因為帳面數據確實就是如此 這種事情其實非常常見 只是一般人沒注意到而已
再加上 單一SQL查詢本來就只能使用單核 這幾乎是所有SQL的共通限制
真想快 那就去使用萬惡Oracle吧 雖然實在是吃像難看 但是真的是快得沒話說
所以
如果你的系統只是單調運算 並非大量併發執行的話
低核高頻 絕對會比多核心來的有利
更別說動態超頻一直都是Intel的強項
AMD通常可以開超頻 想辦法把時脈拉上去就是.
當然
你現在是單人測試期間 所以只跑單核分數確實是會比較差
假若在正式環境中 會有"幾十Hz"的使用者大量同步查詢的話 那麼這顆CPU還是有價值的
整體來說
小型伺服器基本上衝高頻 大型伺服器衝多核
然後記憶體快取開好開滿 這樣就會快
然後
這些都還只是單純基本"帳面"算力而已
更複雜的還包括硬體優化問題 有的時候INTEL的CPU特定優化確實是做的比較好
這也會導致跑分明明比較低 但是實際速度就是比較快
Oracle+Linux 才會快。
jeremyjoung大大,我剛看到版主的開頭,也是去查cpu Benchmark 您寫的這個可能性非常高XDD
如果版主想測試的話,建議可以用目前爆炸強的電腦,開一個虛擬PC架IIS網站,算力啥的通通給他加上去試一下,就能比較出來了
而且版主的是兩顆CPU,驅動與軟體有沒有支援到,也是一個問題
看到這個新機跑得比舊機慢的案例,想到我多年前也碰過一個。
我簡單分享一下,大家當一個故事看看就好。
那是我在某HP Server 代理商的事,一天業務請我協助一家經銷商回應User 對 Server 效能的一些疑問。
User 就問:我原先的舊PC,CPU是1颗4core i7 等級,記憶體2G,Disk SATA硬碟1顆(沒有Raid),網路卡100Mb(→這透漏我的年齡了)
現在新買的Server,cpu 2顆 是Xeon等級(8core),記憶體是64G,Disk是 SCSI(→應該有人沒看過吧) x6顆(Raid5),網路卡是1Gb
為什麼,新的主機(OS是windows2000 Server版),比舊的PC(OS是 Win2000 專業版),還慢?
而且慢很多,同一支程式,舊PC 20秒內跑完,新Server 跑在30多秒,偶爾還會到40秒後才跑完。
而且新的伺服器一台要二十幾萬,那台舊PC大概還不到5萬。
一開始用說明的方式,還補了一些文件,主要是對 Server的規格說明。
結果user的疑問,反而更多,因為規格上有寫一個CPU處理能力,多工多執行緒+高效率...,Raid 使HDD IOPS提高,是一般SATA IOPS 的好幾倍。
最後被經銷商 盧到不行,只能跑一趟,我還帶了一些測 效能的tool,比如 Super兀,disk 測速(測IOPS)等。
最後証明了,他舊PC的CPU時脈比較高(3.多GHz),Server 是2.2GHz(吧,反正有差距)
User 的軟體很簡單,他只會用,是否支援多工他也不清楚。
User 接受了,Server 是求稳,所以越多工的環境,越多執行程式的狀況下,可承載的“總服務能量”比PC高很多。
但如果是單一程式(單執行緒),PC 因為CPU時脈高,PC會跑得比較快。
那時候user還很自嘲地說,花了二十幾萬,買了一個不能用的機器,他老闆會把他釘在牆上1年。
後來知道user,把這台新買的server就改當其他的服務用,好像是當FileServer。