請教站上前輩,我有一台網站伺服器,
工作單純,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 預設值保守。
先把 SQL 實體核心縮到 8 ~ 12 個、開 MAXDOP = 4、電源計畫改 High Performance,通常就能比舊機快 20-30 %。
真要吃滿 128 緒,務必升級到 SQL 2019 或更新版,否則傳統 OLTP 工作負載會被: 上下文切換(Context Switching)與 NUMA 記憶體來回搬資料的耗損給「稀釋」掉。
這是典型: 軟體工程師不瞭解硬體架構, 造成的選擇錯誤. 但不見得要將此歸因於你, 因為技能樹的分支, 是從學校科系就已經開始了, 不是出社會後可以追上的.
如果你是: 只有幾隻貓的新創/公司裡的一條龍/從DevOps頭做到尾的全端, 多了解以上這些硬體架構, 當然會提升你的產能, 但相對---你也要付出非常多的時間和學習, 尤其大部分軟體工程師並未充分學習過 x86 的硬體特性, 上手要花很多時間.
但如果是: 分工精細的多人團隊 (通常要百人以上), 有充足編制的跨國上市公司, 通常這個工作會是落在: 部署和維運團隊的系統架構師的身上, 他們會先去了解你的軟體組成, 再幫你選出合適的硬體, 避免你自己亂配出現問題. 開發團隊專心寫程式就可以, 不需要管到這麼底層的硬體技術.
部署和維運團隊的系統架構師,主要負責: 設計、規劃和維護資訊系統的架構,確保系統的穩定、高效和可擴展性,同時也需要考慮到部署和維運的需求,讓系統在部署後能順利運作,並能方便地進行維護和管理。
系統架構設計:
根據業務需求和技術標準,設計符合系統架構的整體方案,包括技術選型、組件選擇、數據流設計等。
部署規劃:
制定系統部署方案,包括部署環境、部署流程、版本控制等,確保系統能順利部署到生產環境。
運維策略:
規劃系統的監控、告警、日誌、備份、災難恢復等運維策略,確保系統的穩定運行。
效能優化:
分析系統效能瓶頸,並提出優化方案,提升系統的執行效率。
安全性設計:
考慮系統的安全性需求,設計安全策略,保護系統免受攻擊。
技術支援:
為部署和維運團隊提供技術支援,解決系統運行過程中遇到的問題。
技術研究:
關注最新的技術發展,研究適用於系統的技術方案,並不斷優化系統架構。
vs 開發團隊:
系統架構師需要與開發團隊緊密合作,確保系統的開發符合架構設計,並及時解決開發過程中遇到的問題。
vs 測試團隊:
系統架構師需要與測試團隊合作,確保系統的質量,並根據測試結果進行優化。
vs 維運團隊:
系統架構師需要與維運團隊合作,確保系統的穩定運行,並協助解決運行過程中遇到的問題。
vs 產品團隊:
系統架構師需要與產品團隊合作,了解業務需求,並將其轉化為技術方案。