軟件產品常常會出現這樣的情況:產品性能因某些無法預料的瓶頸而受到干擾,導致程序的處理效率降低,性能得不到充分的發揮。如何快速有效地找到軟件產品的性能瓶頸,則是我們感興趣的內容之一。
性能計數器的確是Windows Server中一款非常強大的工具,它可以讓你及時了解到服務器的各項性能指標,從而你可以知悉服務器的運行狀態是否正常,幫助你分析定位服務器可能出現的問題。具體可以參看 利用Windows性能計數器(PerformanceCounter)監控。
三種不同的WCF相關性能計數器與.NET Framework 3.5 一起安裝。在性能監控器中,你可以在ServiceModelService,ServiceModelEndpoint和ServiceModelOperation下面看到這些計數器。你可以選擇通過配置來為你的應用程序開啟這些
WCF性能計數器級別之服務性能計數器
服務性能計數器將服務行為作為整體來進行衡量,可用於診斷服務整體性能。如果使用性能監視器查看,可以在 ServiceModelService 3.0.0.0 性能對象下找到服務性能計數器。使用以下模式命名計數器實例:
ServiceName@ServiceBaseAddress服務范圍內的計數器是從終結點集合中的計數器聚合來的。
創建新的 InstanceContext 時,用於創建服務實例的性能計數器將遞增。請注意,即使在(通過現有服務)收到非激活消息時,或在從一個會話連接到實例、結束會話然后從其他會話重新進行連接時,也將創建新的 InstanceContext。
WCF性能計數器級別之終結點性能計數器
使用終結點性能計數器可以查看反映終結點如何接受消息的數據。使用性能監視器查看時,可在 ServiceModelEndpoint 3.0.0.0 性能對象下找到終結點性能計數器。使用以下模式命名計數器實例:
(ServiceName).(ContractName)@(endpoint listener address)數據與為單個操作收集的數據類似,但它只在終結點之間聚合。
終結點范圍內的計數器是從操作集合中的計數器聚合來的。
注意: 如果兩個終結點具有相同的協定名稱和地址,它們將映射到同一個計數器實例中。
WCF性能計數器級別之操作性能計數器
如果使用性能監視器查看,可以在 ServiceModelOperation 3.0.0.0 性能對象下找到操作性能計數器。每個操作都有一個單獨的實例。也就是說,如果給定的協定具有 10 個操作,則有 10 個操作計數器實例與該協定相關聯。對象實例按下面的模式命名:
(ServiceName).(ContractName).(OperationName)@(first endpoint listener address)使用此計數器可以衡量調用的使用方式以及操作的執行情況。
當計數器在多個范圍內可見時,從范圍的較高一級收集到的數據會與從范圍的較低一級收集到的數據相聚合。例如,終結點處的 Calls 表示終結點內所有操作調用的總和;服務處的 Calls 表示對服務內所有終結點的所有調用的總和。
下面我們來討論下WCF和ASP.NET Web API 接口執行時間監控,下面是我網上找到的相關解決方案
Capturing WCF Request Execution Time :通過性能計數器和DispatchMessageInspector實現接口執行時間的統計
Tracing in ASP.NET Web API:通過Trace功能統計執行時間
http://www.strathweb.com/2012/11/realtime-asp-net-web-api-tracing-with-signalr/
https://gist.github.com/3174719
http://www.cnblogs.com/icuit/archive/2012/12/09/2810482.html
http://dkochnev.blogspot.com/2011/06/wcf-framework-40-monitoring-service.html
http://kleindublin.blogspot.com/2009/02/wcf-event-log-entry-servicemodelservice.html
http://blogs.microsoft.co.il/blogs/idof/archive/2011/08/11/wcf-scaling-check-your-counters.aspx
http://www.cnblogs.com/danielWise/archive/2011/02/22/1960320.html
WCF Service Performance Monitoring using “Perfmon”