2016-02-02 50 views
3

我們正在通過TeamCity和Octopus部署我們新的.NET Core Wep Api,它在IIS後面的Kestrel上運行。除了第一個請求需要大約2分鐘之外,一切都很好。也就是說,部署後的第一個請求和在IIS上重新啓動站點後的第一個請求。IIS上的ASP.NET核心應用啓動速度很慢

要發佈的應用程序,我們使用同一IIS實例

dnvm use 1.0.0-rc1-update1 -a x64 
dnu publish --configuration release --runtime active --no-source --include-symbols 

舊的應用程序需要大約15秒對第一請求進行響應。 我們的.NET Core應用程序僅在部署到IIS的相同實際代碼上運行純Kessrel時,會在大約15秒後響應。

剩下的1分45秒發生了什麼 - 爲什麼這麼長時間?

我們該如何去調試呢?

更新:

事實證明,IIS是無法關閉的紅隼過程(dnx.exe)優雅。它崩潰,出現以下錯誤:

Unhandled exception at 0x00000000776E298A (ntdll.dll) in w3wp.exe: 0xC000070A: Status 0x (parameters: 0xFFFFFFFFC0000008, 0x0000000000000324, 0x000000000167D930, 0x0000000000277520, 0x000007FEE60388F4). 

如果我手動終止dnx.exe過程,然後重新啓動該網站也啓動相當快,所以我的理論是,章魚部署一步莫名其妙遇到相同的異常和IIS必須等待主機進程超時才能產生新的工作進程。

如何讓IIS優雅地關閉dnx進程?我如何從IIS獲得更易於理解的異常?

+0

您可能會使用跟蹤,例如IIS端的失敗請求跟蹤和ASP.NET端的ETW跟蹤來檢查時間消耗情況。 –

回答

0

問題的原因是IIS無法正常停止運行Kestrel的dnx進程,並且不得不等待它超時才能運行一個正在運行的進程。

若要解決此我們增加了一個PowerShell腳本手動停止DNX過程八達通部署過程的第一步:

Stop-Process -processname dnx -ErrorAction SilentlyContinue -Force 

至於爲什麼IIS無法正常終止工作進程,以及如何以解決我仍然不知道。

相關問題