"ResourceNotFound(404)"的錯誤,並要求 DSC 提取伺服器失敗

適用於: Windows Server 2016

徵狀


假設在 Windows 伺服器 2016年上設定想要狀態組態 (DSC) 提取伺服器,做為 Web 伺服器透過網際網路資訊服務 (IIS) 中執行的 web 服務。

在這個案例中,DSC 提取伺服器應用程式會回應連入要求產生"ResourceNotFound(404)"的錯誤訊息。特別是當您回收應用程式集區中,或應用程式集區回收自動因為 IIS 設定。此外,事件 623,可能會記錄在應用程式記錄檔中:

記錄檔名稱: 應用程式來源: ESENT事件識別碼: 623工作類別: 交易管理員層級: 錯誤描述:w3wp (10204) 的 PSDSCPullSever: 這個執行個體 (0) 的版本儲存區已達到 32 Mb 的最大容量。很可能長時間執行交易是防止版本儲存區的清理,從而導致增大。將拒絕更新,直到已完全認可或復原長時間執行交易。

造成原因


這個問題可能會有任何下列的原因。

原因 1

已經耗盡版本儲存區可延伸儲存引擎 (ESE) 資料庫。這可能被因的大型交易時回收應用程式集區。

原因 2

多個背景工作處理序被設定為"PSWS"的應用程式集區。DSC 使用Devices.edb 資料庫檔案,並必須在獨佔模式開啟這個檔案,(只有一個處理程序,一次可以存取資料庫)。因此,其他背景工作處理序無法存取檔案,而那些資料庫尋查失敗。

原因 3

當它回收 W3WP.exe 處理序時,IIS 就會啟動新的處理序,在先前的程序停止之前。新的處理序無法存取資料庫,而舊的處理序會繼續擁有人。

解決方案


若要修正這個問題,請依照適當的解析度

解決方式 1: 已經耗盡 ESE 資料庫版本存放區區域

設定版本儲存區的大小。若要執行這項操作,請參考下列步驟:

  1. 安裝累積更新的 x64 為主的系統 (KB4480977) 的 Windows Server 2016
  2. 複製Microsoft.Powershell.DesiredStateConfiguration.Service.dll檔案,請從下列位置:
    C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PullServer
  3. 貼到下列位置 (或如果根路徑已經變更,[設定] 資料夾):
    C:\inetpub\PSDSCPullServer\bin\
  4. 設定應用程式的 Web.config 檔案中加入的MaxVerPagesPreferredVerPages參數的版本儲存區的大小。 注意Web.config 位於下列位置 (或您自訂的資料夾):
    C:\inetpub\PSDSCPullServer
     

    例如,如果MaxVerPages設定為24576,版本儲存區大小設定,如下所示:

    24576 * 16 = 393 MB 32 位元模式

    24576 * 32 = 786 MB 64 位元模式

    PreferredVerPages的建議的值是大約有百分之 80 的MaxVerPages值。如果未指定自訂值,則會使用下列的預設值:

    MaxVerPages = 1024年

    PreferredVerPages = 1024年

    例如,設定下列的值。

    < / managementOdata > < 和 > appSettings   < 新增機碼 ="MaxConcurrentRequests"值 ="10000"/ >   < 新增機碼 ="MaxRequestsPerTimeslot"值 ="10000"/ >   < 新增機碼 ="TimeslotSize"值 ="1"/ >   < !--->   < 新增機碼 ="dbprovider"值 ="ESENT"/ >   < 新增機碼 ="dbconnectionstr"值 ="C:\Program Files\WindowsPowerShell\DscService\Devices.edb"/ >   < !--->   < !-   < 新增機碼 ="dbprovider"value="System.Data.OleDb"/ >   < 新增機碼 ="dbconnectionstr"value="Provider=Microsoft.Jet.OLEDB.4.0;Data 來源 = C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;"/ >   -->   < 新增機碼 ="ConfigurationPath"值 ="C:\Program Files\WindowsPowerShell\DscService\Configuration"/ >   < 新增機碼 ="ModulePath"值 ="C:\Program Files\WindowsPowerShell\DscService\Modules"/ >   < 新增機碼 ="RegistrationKeyPath"值 ="C:\Program Files\WindowsPowerShell\DscService"/ > < 新增機碼 ="MaxVerPages"值 ="24576"/ >   < 新增機碼 ="PreferredVerPages"值 ="19600"/ > < / 和 appSettings >

  5. 儲存所做的變更,然後重新啟動 IIS。

解決方法 2: 一個以上的工作者處理序設定"PSWS"的應用程式集區

重設為1的 IIS 背景工作處理序數目。若要執行這項操作,請參考下列步驟:

  1. 開啟 IIS 管理員,然後開啟 [應用程式集區] 節點。
  2. 以滑鼠右鍵按一下PSWS,,,然後按一下 [進階設定
  3. 在 [處理序模型] 區段中,將設定為1最大背景工作處理序

解決方法 3: 當 IIS 回收 W3WP.exe 處理序的新處理序無法存取資料庫

使用停用重疊的回收設定。若要執行這項操作,請參考下列步驟:

  1. 開啟 IIS 管理員,然後開啟 [應用程式集區] 節點。
  2. 以滑鼠右鍵按一下PSWS,,,然後按一下 [進階設定
  3. 在 [回收] 區段中,將設定為True停用重疊的資源回收

參考


如需有關 ESE 的詳細資訊,請參閱下列 「 Microsoft 文件文件:

可延伸儲存引擎

如需有關版本儲存區設定,以及如何監視使用方式的詳細資訊,請參閱下列的目錄服務團隊部落格文章:

版本儲存區、 及呼叫它們全都列出的雜湊桶