2012-03-01 113 views
5

嗨,如何在IIS中使用性能計數器和WCF服務?

我在IIS7一個WCF服務,通過TCP一個WinForm應用程序(WAS),現在我需要監視的性能進行通信。

我已經加入這個web.config文件:

<system.serviceModel> 
    <diagnostics performanceCounters="All" /> 

打開性能監視器後,我跑了幾個測試我的WinForm的,以確保該服務被激活。

然後打開性能監視器(實時),右鍵單擊並添加計數器。我展開ServiceModelService 4.0.0.0並選擇呼叫和呼叫持續時間,我也選擇了我的服務(svc),這個服務在選定的對象列表框中指定,然後點擊添加按鈕。

在ServiceModelOperation 4.0.0.0下選擇呼叫和呼叫持續時間時,是否有實例或操作選擇? ServiceModelEndpoint 4.0.0.0也一樣嗎?

點擊確定後,會添加兩個計數器(ServiceModelService)。

然後,我單擊解凍顯示,並啓動我的winform應用程序,使得幾個調用,但我沒有看到任何性能監視器。我試圖右鍵單擊其中一個性能計數器,然後選擇「Scale Selected Counter」,但這樣做什麼都不做?

目標僅僅是看WCF服務的性能(速度,持續時間,金額,連接等等),同時也很適合檢查單個操作。

請幫忙!

注:這是在文章中,我試圖遵循:http://dkochnev.blogspot.com/2011/06/wcf-framework-40-monitoring-service.html

回答

2

WCF服務,包括性能計數器,您可以用Windows Performance監視器(Perfmon.exe)跟蹤。您可以在Windows Server管理工具2003

性能計數器可以從該服務的config文件的診斷節中啓用啓動此,如在下面的示例配置:

<configuration> 
    <system.serviceModel> 
    <diagnostics performanceCounters="All" /> 
    </system.serviceModel> 
</configuration> 

你可能想看看這些文章可以指導你如何使用性能計數器WCF服務:

+4

您是否看了我的文章?這是我在做什麼,但我沒有得到任何讀取?是否因爲我在WCF中使用messageInspectors? – Banshee 2012-03-01 15:23:42

+0

@Banshee,如果有的話,你有可能用最終的解決方案更新這個機會嗎?我同意這是一個可怕的答案。 – Dan 2014-05-20 16:32:26

4

看起來這可能是與性能計數器是如何工作的一個bug(或設計功能)。一些戳後,我發現這在MSDN forums

我有同樣的問題。在命名計數器實例時,Microsoft似乎會截斷操作名稱末尾的尾部 。他們 用一些2位數的基數-10魔術數字代替被截斷的部分。我猜這是一個散列,但是誰知道它實際上是如何產生的 。問題是這個數字不能保證是唯一的,並且 會導致計數器名稱中的衝突。如果發生這種衝突, 它似乎會導致所有端點和操作計數器消失(至少在我的 )。

我有兩個名爲UpdateMarkupChunk和UpdateMarkupCancel的方法。如果 我註釋掉一個或另一個,以使另一個不存在,他們 都解析爲計數器實例名稱中的UpdateMarkupC53。當我在 中註釋它們時,沒有任何計數器實例出現在 ServiceModelEndpoint或ServiceModelOperation中。

你可以爲此建議一個解決方法,微軟?我有一個生產 服務已經到位,我想監視,並更改 操作名稱不是一個選項。

而微軟迴應:

你是正確的。而這種行爲是有目的的。性能計數器實例名稱的長度有 的限制。

使用性能監視器(Perfmon.exe)查看時,操作性能計數器位於 ServiceModelOperation 4.0.0.0性能對象下。每個操作都有一個個體 實例。也就是說,如果給定合同有10個操作,則10個操作 計數器實例與該合同相關聯。 。

(服務名稱)(ContractName)(OperationName)@(第一端點偵聽 地址)

當Windows通訊基礎(WCF)計數器實例名稱 :對象 實例使用以下模式命名超過了最大長度,WCF用一個散列值替換實例名稱的一部分 。

如此看來,因爲這個最大名稱限制的,如果只有一個兩位數的散列後綴,一個哈希衝突的大機會,當計數器的兩個實例具有相同的名稱,它抹了整個櫃檯,這是不可能的。

這是有點令人沮喪。所以除非微軟修復了這個問題(無論是長哈希值還是更好的perf計數器衝突處理),還是提供了一個合適的解決方法,我們都在盲目工作。

+0

很高興能找到此評論。這正是我在PerfMon的ServiceModelOperation 4.0.0.0下沒有看到任何操作的原因。非常感謝,微軟。什麼令人難以置信的愚蠢的設計。 – MiloDC 2016-08-20 03:16:42