天天看點

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

IIS服務在阿裡雲NAS上的最佳實踐

在我們的上一篇系列文章《Windows IIS服務挂載NAS共享檔案存儲》中,我們詳細介紹了如何利用阿裡雲檔案存儲(NAS)服務作為共享存儲的後端搭建Windows IIS伺服器提供Web和FTP服務。

當使用者使用了文中介紹的設定方法之後,在使用IIS服務時還是可能會碰到這樣或者那樣的問題。本文我們就将着重介紹一下IIS服務在NAS上使用時會碰到的一些常見問題以及解決方法,為使用者提供IIS上雲的最佳實踐。

1. 請使用SMB檔案卷

SMB是微軟力推的遠端檔案共享協定,與Windows是完全相容的。而來自Linux/Unix開源世界的NFS與Windows的相容性是難以保證的。為了避免協定相容性産生的相關問題,我們建議Windows使用者将IIS服務搭建在SMB檔案卷上。

2. 怎樣讓IIS服務更快更順暢

如果使用者在使用IIS服務時感覺速度慢,可以嘗試以下幾種加速方式:

2.1. 如果連接配接速度極慢

如果連接配接的速度非常慢,比如KB/s量級,請檢視是否有以下問題:

2.1.1. NFS和SMB用戶端發生沖突

檢視用戶端虛拟機上的這個系統資料庫項:

[HKLM\System\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder]

,檢查有沒有Nfsnp和Webclient。如果有,請去掉後重新開機用戶端機器。

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖1:[HKLM\System\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder],檢查有沒有Nfsnp和Webclient

2.1.2. DNS問題

Ping挂載位址看是否能通,或者延時是否正常。如果延時較長,請嘗試Ping挂載IP,如果Ping IP延時比Ping挂載位址的延時小很多,可能是DNS問題。(如果嘗試直接挂載IP位址延時沒有問題,那麼可以确信是DNS問題,需要盡快解決DNS問題。産品化一定要使用DNS挂載)

2.2. 優化系統資料庫

由于IIS使用SMB檔案卷的方式通路一個檔案時,IIS背景會有多次通路SMB檔案卷的操作,每次通路的時間不長,但是多次的疊加可能會造成用戶端總時間比較長。改進的方式可以參考附錄《Performance tuning for file server clients》将其中提到的三個系統資料庫項都調大,比如600, 或者更大。需要注意的是這些系統資料庫項都在系統資料庫

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]

之下,分别是

  • FileInfoCacheLifetime
  • FileNotFoundCacheLifetime
  • DirectoryCacheLifetime

說明:如果找不到以上三個系統資料庫項,請按照 Windows 的字段格式要求進行建立。

另外IIS自身也有若幹系統資料庫可以調整,詳情請參見《Tuning IIS》。

2.3. 浏覽器建議使用Chrome,不用IE

浏覽器的差別相信不用多做介紹了。Chrome浏覽器或者基于谷歌浏覽器核心的浏覽器速度都會更快一些的。

3. 常見錯誤及解法

3.1. HTTP錯誤500.19:無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x80070003

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖2:HTTP錯誤500.19:無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x80070003

解法

在IIS管理器右邊欄的 編輯網站->基本配置 中把實體路徑改為UNC路徑(\\sharename.nas.aliyuncs.com\myshare),不能用盤符路徑。

3.2. Windows 2016: HTTP錯誤500.19。無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x800704F8

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖3:Windows 2016: HTTP錯誤500.19。無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x800704F8

Windows 2016需要修改系統資料庫

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\AllowInsecureGuestAuth]

使用者打開系統資料庫編輯器之後需要找到

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]

, 然後用右鍵選取建立DWORD(32位)值。 

《Windows IIS服務挂載NAS共享檔案存儲》文章中有提及。

3.3. Windows 2016:HTTP錯誤500.19。無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x8007003a

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖4:Windows 2016: HTTP錯誤500.19。無法通路請求的頁面,因為該頁的相關配置資料無效。錯誤碼0x8007003a

Windows 2016需要在IIS管理器->基本設定->連接配接為中設定一個特定使用者來通路網站檔案,不能直接用Administrator。客戶可以用《Windows IIS服務挂載NAS共享檔案存儲》中提到的辦法建立iis_user作為特定使用者通路檔案。 

3.4. 沒有寫通路權限

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖5:沒有寫通路權限

需要在“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”目錄中給連接配接身份(比如iis_user)讀寫權限。否則權限不足無法緩存檔案到本地。

3.5. HTTP錯誤500.19 無法通路請求的頁面,錯誤碼0x80070043

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖6:HTTP錯誤500.19。無法通路請求的頁面,錯誤碼0x80070043

這種情況是因為連接配接遠端路徑發生驗證錯誤。在IIS管理器點選左側的網站選擇出問題的網站,點選IIS管理器右側的檢視虛拟目錄,點選測試設定,即可看到測試連接配接的授權失敗。需要确定連接配接所使用的使用者名密碼是正确的。

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖7:點選IIS管理器右側的檢視虛拟目錄,點選測試設定,即可看到測試連接配接的授權失敗  

3.6. 未能加載檔案或程式集“Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個依賴項。指定的伺服器無法運作請求的操作。 (異常來自 HRESULT:0x8007003A)

IIS服務在阿裡雲NAS上的最佳實踐IIS服務在阿裡雲NAS上的最佳實踐

圖8:Windows Server 2016未能加載檔案或程式集

這是Windows Server 2016的一個已知問題(見《Windows Server 2016加載dll錯誤》),當IIS挂載檔案卷時使用本地使用者而不是域使用者時,加載檔案卷裡的dll會出現錯誤。推薦方法是使用Windows Server 2012,或者給Windows Server 2016虛拟機安裝Active Directory功能生成一個AD域,就可以解決這個dll加載失敗的問題。具體解法詳見《通過安裝和配置AD域解決Windows Server 2016的IIS無法運作SMB檔案卷檔案的問題》。

4. 附錄

4.1. Windows IIS服務挂載NAS共享檔案存儲

https://help.aliyun.com/document_detail/54986.html

4.2. How to fix slow access to network shares

https://www.zubairalexander.com/blog/how-to-fix-slow-access-to-network-shares/

4.3. Performance tuning for file server client

https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/file-server/

4.4. Tuning IIS

https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/web-server/tuning-iis-10

4.5. Windows Server 2016加載dll錯誤

https://stackoverflow.com/questions/54245000/windows-server-2016-iis-hosted-website-failed-to-load-dll-on-a-remote-file-share

4.6. 通過安裝和配置AD域解決Windows Server 2016的IIS無法運作SMB檔案卷檔案的問題

https://yq.aliyun.com/articles/692463

繼續閱讀