Windows-Server-2008

IIS7 和 CGI (與 IIS6 相比)的性能問題

  • December 20, 2013

我的公司正在將應用程序/Web 伺服器從 Windows 2003 升級到 Windows 2008(主要是因為託管公司不再提供 2003,我們需要新硬體來獲得性能)。

我們的應用程序是用 Delphi(CGI 模組)編寫的,數據庫是(這有點尷尬)DBF 文件。

我們的舊伺服器是:

  • Windows 2003 Web SP2 (IIS6) - 32 位
  • 2 GB 記憶體
  • 英特爾至強 CPU 3040 @1.86GHz(雙核)
  • 250 GB SATA RAID 1 硬碟

新伺服器是:

  • Windows 2008 Web R2 (IIS7) - 64 位
  • 4 GB 記憶體
  • Intel Xeon CPU 3320 @2.50GHz(四核)
  • 500 GB SATA RAID 1 硬碟

該應用程序主要需要高讀取速度,因為我們必須連續循環遍歷表以載入資訊(是的,我們使用索引來查找位置)。

生產伺服器負載通常低於每秒 5 個請求(很少),除非 google 正在編制索引(最多 10-20 個)。有時請求需要一些時間(搜尋、銷售列表……)。

問題:我們遇到了嚴重的性能問題。新伺服器執行良好,但請求現在需要雙倍的時間才能完成。壞事是 4 個核心在執行期間似乎很空閒。

我在應用程序池中啟用了 32 位應用程序。我嘗試過創建一個網路花園(有 4 個工作程序),並同時啟動 4 個 CPU 密集型 CGI,但舊伺服器仍然勝過新伺服器。我試圖提高工作程序的優先級,但沒有任何區別。

有人知道會發生什麼,以及我可以做些什麼來提高新伺服器的性能嗎?

(顯然,除了重寫我們的應用程序)

提前致謝!

經過大量測試,我們得出結論,IIS 處理 CGI 執行檔的方式必須受到限制(可能是通過安全檢查來懲罰磁碟訪問)。

我們嘗試啟動控制台執行檔,它與 CGI 基本相同(訪問相同的 FoxPro 數據庫),並且執行時間大致相同(儘管它們應該有所改進,但至少它們沒有更糟)。

解決方案: 使用 Windows 2003 Standard Edition 重新安裝新伺服器

標準版(而不是 Web 版)允許 Windows 2003 使用所有四個核心和 4GB 的 RAM。Windows 2003 和 IIS6 不會懲罰我們的 CGI。現在,單個 CGI 的執行時間比舊伺服器上的執行時間減少了大約 30%。此外,4 個核心允許我們處理雙倍並發 CGI。

無論如何謝謝!

引用自:https://serverfault.com/questions/560358