2017-02-10 86 views
12

我的理解是,ASP.NET Core中間件在請求準備好處理時運行。但是,如果應用程序處於加載狀態,並且ASP.NET Core無法處理所有請求,則它們會被放入某個「隊列」中?我不知道這是否是Kestrel內的一些託管隊列,或者它是否與libuv有關。有沒有辦法在Kestrel/ASP.NET Core中獲取請求隊列中的時間?

我希望能夠知道給定請求在此隊列中花費多長時間。 HttpContext上有什麼可以告訴我這個嗎?

在此先感謝

+0

出於興趣,爲什麼排隊時間很重要? – DavidG

+0

因爲我想歸因於向我的服務提出請求所花費的時間,因爲這些服務的日誌會報告一個快速請求。例如,我的瀏覽器客戶端可能會看到需要2秒才能得到響應,但所有來自中間件的日誌總共報告了200毫秒。我想要證明1.8s在哪裏。感謝您的關注:) – ChrisBellew

+0

什麼讓您認爲缺少時間是由於請求隊列? – DavidG

回答

4

這個問題並不那麼容易。

如果你想跟蹤所有的時間,你必須做很多步驟。在開始的時候給請求添加一個獨特的郵票或滴答,所以你可以逐一識別它們。 其次,創建一個處理程序,攔截您的請求並記錄時間。第三,爲每個請求相關方法添加一個日誌記錄點。 第四 - 這將是一個驚喜 - 你不能做任何事情來減少這個時間,期望關於線程,並行請求,會話處理等IIS的配置 第五 - 如果你的瀏覽器測量2000毫秒,你的服務器測量200毫秒,它不是.NET核心,它的代碼/架構/配置。 抱歉告訴你壞消息。

使用System.Diagnostics.Stopwatch類來測量時間。

相關問題