WCF和ASP.NET Web API 接口执行时间监控
软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥。如何快速有效地找到软件产品的性能瓶颈,则是我们感兴趣的内容之一。
性能计数器的确是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”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在前端如何玩转 Word 文档
- DataGrid删除确认及Item颜色交替
- 详解Apache下.htaccess文件常用配置
- 你的模型需要解释(二)
- 算法工程师-SQL进阶:强大的Case表达式
- SOLID设计原则和我的一点个人感悟
- SpringBoot整合Freemarker使用
- Vm常见虚拟网络模式
- 设计模式 | 桥接模式
- Supervisor快速入门 | 使用Supervisor守护Nginx进程
- 技术选型的艺术---湖北技术价值分享会
- SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
- Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇
- SpringBoot thymeleaf自定义错误页面
- SpringBoot 配置Redis操作