2017-04-25 38 views
0

我們有一個.NET webapi應用程序(帶有服務自動啓動提供程序)。w3wp從一天到另一天的高內存使用量

該應用程序是由我們的buildserver建,輸出部署到多個服務器和應用程序的請求通過負載均衡器路由。

該網站已經運行好幾個月了。幾天前,我們注意到應用程序池使用的內存比前一天多出3倍,在3臺服務器中有2臺。

,現在使用更多的內存比其他的服務器就是這麼做的,即使我們IISRESET,重新啓動服務器等。applicationpool被啓動後比其他的分配馬上3倍更多的內存。

現在到了超怪異的東西....

要了解被關押了什麼在內存,I「附加」一個dotTrace探查器(遙控器,使用remoteagent.exe)到一個服務器。池似乎回收,一旦它啓動,它不再分配3倍的內存(所以內存快照是無用的)。我從工作進程中「分離」了剖析器,發現應用程序池不再使用3x內存。我重新啓動了服務器,並且仍然沒有使用3x內存。

因此...似乎只是將探查器連接到w3wp進程,以一種持久的方式解決了我的問題,因爲它仍然在iisreset和重新啓動後使用「低內存使用情況」。

試圖在服務器#2遭遇了同樣的問題,同樣的程序,也固定我的問題。

好像dotTrace做這樣神奇的東西我workerprocesses :)?

任何人都可以找出原因嗎?我有更多的服務器(在其他環境中)有同樣的問題,但我想知道這個問題的根源。

回答

0

簡短回答: 我發現原因是Microsoft Monitoring Agent的分析器掛鉤到我的w3wp進程。

龍答:在事件日誌

.NET Runtime version 4.0.30319.34014 - The profiler was loaded successfully. Profiler CLSID: '{AD5651A8-B5C8-46CA-A11B-E82AEC2B8E78}'. Process ID (decimal): xxxx. Message ID: [0x2507]. 

帶領我到另一個探查被附加到W3WP的結論

詳細信息。在註冊表中搜索CLSID很明顯涉及監控代理。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS 

和改變:探查器可以先瀏覽Windows註冊表被禁用

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=1 

到:

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=0 

我想,有一個更好的方法來禁用分析比直接更改註冊表,(也許卸載微軟監控代理?)

。W剖析器導致3倍內存消耗仍然是一個謎。

相關問題