2017-08-01 41 views
-1

我有一個站點,我通過ajax使用Web API,該站點在同一個IIS上作爲不同站點駐留在同一IIS上,並且這兩個應用程序池都不相同。我的web API是在MVC4中,我使用SQL Server進行數據訪問,一些web API需要0秒,有些需要2秒到8秒。我的網站集中在Azure服務器上。當100個或更多用戶使用該站點時,IIS站點掛起

我的問題是,當100個或更多的用戶使用我的網站時,我的IIS Web API網站掛起,並沒有更多的迴應任何請求。爲此,我查看了工作進程,其中列出了一些請求,並且服務器未響應任何請求。當時,CPU利用率爲50%,內存爲19%。

我可以爲此問題分配4個工作進程到Web API網站,但不知道如果我將多個工作進程分配給一個站點如何工作。

如果你有什麼想法,請與我分享我如何處理上述情況?

+1

任何人都不可能告訴你發生了什麼事情,而無需花時間在您的網站上。沒有任何關於100個用戶的原因 - 它必須是你的代碼中的東西。你能否在不同的環境中複製相同的問題?您是否有任何日誌記錄來確定當超過100個用戶時發生了什麼? – Fermin

+0

我花了很多時間,但無法找到。可以告訴我,我怎麼能找到哪個查詢或API掛起我的網站?或死鎖問題是否存在.... 如果我做網站園藝的網站,將處理如果工作進程掛起或不? –

回答

0

我確定IIS不會導致此問題。如果您認爲請求被IIS阻止,您可以檢查CurrentQueueSize或ActiveThreads。

您還可以使用'appcmd list request'命令檢查命令行執行的請求。您將能夠看到哪些請求需要較長時間才能執行,阻止請求通常位於頂部。 代碼中的某些內容很有可能阻止了請求。

順便說一下,您已在'azure'下標記了此查詢。你是否將其作爲Azure Web App運行?如果是的話,你可以用'Kudu'來診斷原因。

0

我在猜測你使用的是Azure虛擬機(從描述中我發現你可以訪問IIS)。如果是這樣的話,你可以使用debugdiag捕獲進程的掛起轉儲,並進行自動分析弄清楚你的應用程序代碼中發生了什麼。

出現問題之前,請着手服務器

  1. 捕獲DebugDiag(捕捉連續掛轉儲)
    • 啓動DebugDiag資料收集上安裝DebugDiag並轉到進程選項卡 debugdiag process tab
    • 重現問題
    • 捕獲掛起轉儲
      • 右鍵單擊w3wp。EXE進程
      • 選擇的選項創建完全內存轉儲 capture full memory hang dump
    • 捕獲另一轉儲後30秒和30又接連秒後
    • 您應該轉儲文件夾C捕獲:\ PROGRAMFILES \ DebugDiag資料\日誌\雜項\
    • 右鍵單擊轉儲文件,並選擇選項分析杭 Analyse hang issue

現在debugdiag自動掛起分析應該告訴你代碼中是否存在死鎖或其他問題,並且還顯示所有掛起的請求以及每個請求被卡住的位置。同時查看請求的堆棧跟蹤並查看它在做什麼。

如果您在分析時需要任何幫助,請隨時用更多的細節更新問題。

+0

感謝您的回覆。 是的我正在使用Azure虛擬機,我會嘗試服務器掛起時,讓你知道 –