2013-03-28 84 views
1

我有一個WCF服務,當前在傳統模式下使用.NET 4.0在IIS7中託管。該服務通常在250到400mb之間嗡嗡聲,這是合理的,因爲它連接的數據庫的大小僅爲300mb左右。隨着內存使用量的增加,CPU使用率保持在0%和15%之間。然後隨機的CPU和內存使用量將大幅增加。 RAM使用率將上升到物理內存限制(在此EC2實例上爲1.7GB),CPU將在100%處達到峯值,然後返回到25%和50%之間。幾分鐘後,內存使用情況和CPU使用率將回落到正常水平。追蹤WCF服務中的內存泄漏

有沒有人有任何想法可能會導致此?如果沒有,是否有一個很好的方法來追蹤這個問題?我已經使用PerfMon來查看使用情況,但我找不到一個好方法來追蹤所有內存在WCF服務中實際使用的位置。任何建議表示讚賞。

+1

您可以嘗試JetBrains探查器http://www.jetbrains.com/profiler/它在10天試用期內功能齊全 – Lanorkin 2013-03-28 12:27:00

回答

3

聽起來像你,我沒有正確關閉連接。當你使用WCF時,請注意連接實現IDisposable - 如果你不使用它,連接將會持續,數據將被存儲。正確使用'使用',你可能會解決這個問題。

其次,這可能意味着您正在使用PerSession模式。如果你使用會話,他們將被存儲當然:-)另外,WCF中有一些已知的錯誤會導致這種情況。最值得注意的是'單身'模式;將其改爲'PerCall',它可能完全解決您的問題。

我見過一些導致內存泄漏的情況。

至於剖析,我是紅門/螞蟻的忠實粉絲,但也有其他的探測器。

0

按照你們的建議下載了一個探查器。事實證明,這不是我正在做的事情,但是AE.Mail庫(我正在使用)中的搜索功能如何工作,每隔5分鐘就會在內存中造成大量臃腫。我使用的是Red-gate,它非常棒,感謝大家輸入建議。