Windows Server web server Apache 網站伺服器 Linux NGINX 伺服器 IIS

從監視運行到調校參數 優化IIS網站效能

2016-07-26
對於喜好以開放原始碼為基礎的IT人員來說,通常比較偏向選擇Linux下的網站平台,主要的原因之一是認為Windows的IIS網站平台效能較差,然而真是如此嗎?其實這可真是一件天大的誤會!現在就來學會IIS網站的優化技巧,讓這個長久以來的迷思就此終結。
當企業打算建立一個網站應用程式時,無論基礎架構為何,或者選擇部署在實體伺服器還是虛擬化作業環境之中,基本上會選擇的兩種平台類型,分別是Microsoft Windows的IIS(Internet Information Services)或是Linux的Apache、NGINX以及LiteSpeed。當然,有些IT人也可能會選擇將Apache應用程式直接安裝在Windows作業系統中來使用,但像這樣的情境實務上並不多見。

網站應用系統的效能表現,是否與所選擇的平台類型有絕對關係,一直以來都是兩派人馬針鋒相對的火熱議題之一,其實客觀來說,甚至於與所使用的程式語言都沒有絕對關係,也就是說一切事在人為。

但如果就整體性而言,包括效能、安全、易於部署管理三個面向來說,選擇Windows Server 2008版本以後的IIS網站平台是較為理想的,因為開發人可以藉由Visual Studio開發工具來快速發展企業應用程式。進一步還可結合雲端的Visual Studio Team Services,完成共用程式碼管理、工作追蹤以及軟體的發行等協同開發作業。

整體而言,一個網站效能的表現如何,絕非是一個網站平台類型就能決定,它牽連的層面相當多,至少包括以下幾個重點:

‧伺服器硬體的選擇:首當其衝就是CPU的選擇,因為慢速的處理速度與核心數較少的規格,都會大幅降低密集工作階段處理時的效率,而較小的L2/L3快取也會影響處理的效能。其他像是實體記憶體的大小、網路的頻寬、儲存磁碟的讀寫速度、儲存介面卡的規格等等,也都是影響網站效能表現的最根本因素。其中記憶體的多寡,更會直接影響到平台上網站的數量、應用程式集區的數量、工作處理程序的數量、動態網頁內容的儲存效率等等。

‧應用程式的撰寫方式:當硬體各個主要資源的使用率偏低,但網站的效能卻表現不佳時,就必須探究應用程式本身程式碼的設計問題。但如果是硬體資源在少量的使用者連線存取時就會往上飆升,便極有可能是前端應用程式對於後端資料庫在執行查詢、新增、刪除及更新資料的方式出了問題。以SQL Server來說,通常是沒有善用預存程序(Stored Procedure),以至於造成前端網站的運算資源耗盡。

‧資料庫系統的效能:基本上都會將資料庫系統與網站應用程式分開在不同的實體主機或虛擬機器上運行,這是因為可以讓各類資源的使用完全獨立開來,不會發生像是在連線流量的高峰期間,互搶CPU、磁碟及網路I/O資源的情況。另一方面也有助於未來拓樸架構的擴展更加容易。除此之外,資料庫本身的結構設計也是極為重要的一個環節。

‧檔案系統的配置:將不同應用需要或是不同重要層級的資料,分散存放在不同效能的儲存裝置內,是非常重要的基礎規劃,尤其對於支援多資料庫分散儲存的應用系統,例如Microsoft Exchange Server和IBM Domino Server,必須將一些關鍵的人員信箱與應用程式資料庫,存放在RAID 0+1的HDD磁碟陣列或是SSD的磁碟集區內。

‧網路的架構設計:一般對於網站應用系統的拓樸架構設計,大多採前後端各一部主機的方式來完成,但在面對大流量的使用環境時,可能要進一步將它拓展成前後端皆有負載平衡的多主機分散架構,或是將佔用較多運算資源的伺服器角色獨立出來,常見的便是擔任索引編目以及搜尋的應用服務。

接下來一同來學習如何在Windows Server 2012 R2的IIS網站應用程式平台上,透過內建的監視工具以及服務本身的功能,為企業的網站應用程式運行效能打好基礎。

安裝IIS伺服器角色

在Windows Server 2012 R2中所使用的IIS伺服器角色為8.5的版本,可選擇經由圖形化的「伺服器管理員」介面進行安裝,也可以採用以下兩者之一的命令工具來安裝,分別是DISM(Deployment Image Servicing and Management)與PowerShell。

其中DISM便是用來取代原有的Package Manager(Pkgmgr.exe)工具,適用於Windows 7、Windows Server 2008 R2以及Windows Server 2012/R2作業環境。

這兩種命令工具皆有專屬的名稱空間(Namespace)與相對的可用參數。例如可下達命令「DISM.EXE /enable-feature /online /featureName:IIS-WebServerRole /featureName:IIS-WebServer」來安裝IIS伺服器角色,或是改在PowerShell中執行「import-module servermanager」與「add-windowsfeature web-server –includeallsubfeature」來安裝IIS伺服器角色與指定的服務功能。

若只想要安裝相關的特定模組,例如網站靜態內容模組,則兩種命令工具所使用的參數也是不同的,前者是搭配「/featureName: IIS-StaticContent」參數,而後者則執行「add-windowsfeature Web-Static-Content」。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!