1. 程式人生 > >關於Server 2016 IIS應用程式池崩潰的問題

關於Server 2016 IIS應用程式池崩潰的問題

有一個小ASP程式,呼叫Access資料庫,遷移到Server 2016/IIS10中。

為了訪問資料庫,安裝了Access Database Engine 2016元件。

後期使用中發現,程式在查詢資料庫時沒問題,寫入資料庫時會隨機發生應用程式池崩潰的故障。(但是資料確實已經寫進資料庫裡了)

受IIS的故障恢復策略影響,崩潰的應用程式池會自動重啟,但使用者這邊由於丟失了session,瀏覽器會提示重新登入。

檢查伺服器上的事件,發現有如下記錄:

錯誤應用程式名稱: w3wp.exe,版本: 10.0.14393.0,時間戳: 0x57899b8a 錯誤模組名稱: KERNELBASE.dll,版本: 10.0.14393.2457,時間戳: 0x5b7e2adb 異常程式碼: 0xe06d7363

錯誤偏移量: 0x0000000000033c58 錯誤程序 ID: 0x2098 錯誤應用程式啟動時間: 0x01d449d2261e982f 錯誤應用程式路徑: c:\windows\system32\inetsrv\w3wp.exe 錯誤模組路徑: C:\Windows\System32\KERNELBASE.dll 報告 ID: cb112c13-544c-4d28-bdbb-f0b1507c8b0a 錯誤程式包全名: 錯誤程式包相對應用程式 ID:

按照這個資訊上網查詢,得到的都是一些不想幹的結果。有說是目錄沒有寫入許可權的,其實不然,因為崩潰之後再看,發現數據已經寫入庫中了。

先是把w3wp.exe崩潰時的dump檔案拿回來分析,windbg最後提示到是一個office相關的dll上出了異常。

根據之前的使用體驗,最後問題就懷疑到了Access Database Engine身上。

於是科學上網,按照錯誤程式碼0xe06d7363進行查詢,得到的結果仍然非常少,但發現一個有用的:

《IIS crash with Access Database Engine 2016 Redistributable》

這個Po主說自己也是從其他系統遷移到2016的,Access Database Engine也裝了2016版本,結果就出現了同樣的故障。據他測試,如果Database Engine使用2010版本,則沒有問題。

下面有回覆說也遇到了同樣的故障,但是解除安裝了ADE改裝Access Runtime 2016也可以解決。

我先嚐試在伺服器上解除安裝ADE,然後安裝runtime 2016,發現問題更嚴重了,無論是web還是gui都無法開啟資料庫……

最後解除安裝,安裝了ADE 2010 X64版本,結果待觀察。