在自托管 Web 应用程序中使用性能计数器

Posted

技术标签:

【中文标题】在自托管 Web 应用程序中使用性能计数器【英文标题】:Use performance counter in self host web application 【发布时间】:2014-06-18 12:51:11 【问题描述】:

我想对我的 Web Api 自托管应用程序进行压力测试。此应用程序托管在 Azure 辅助角色上。

我知道如何将性能计数器从我的 Worker Role 获取到我的存储(用于分析),但是因为我的 Web api 是使用 Microsoft.Owin.Host.HttpListener 自托管的,所以我不知道是否有一些现有的 perf我可以插入的计数器。

我已经尝试了几个 perfmon 计数器:

AspNet 应用程序 Web 服务(这只允许我选择 IIS 中定义的 Web 应用程序)

当我选择进程时,我没有像 req/sec 等有趣的计数器...

有没有办法为自托管 Owin 应用程序激活一些计数器?

只使用我没有做的配置? 使用其他自主机? 使用其他组件并修改我的代码? (添加属性...,我见过类似的东西https://github.com/aliostad/PerfIt)

非常感谢。

【问题讨论】:

你找到答案了吗? 【参考方案1】:

我看到你提到了诊断,这些是我在诊断中使用的:

<PerformanceCounterConfiguration counterSpecifier="\Asp.net\Request Execution Time" sampleRate="PT1M" />
                <PerformanceCounterConfiguration counterSpecifier="\ASP.net\Requests Rejected" sampleRate="PT1M" />
                <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Current Connections" sampleRate="PT1M" />
                <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Connection Attempts/sec" sampleRate="PT1M" />

我所做的是进入 perfmon 并在我的开发机器上右键单击“添加计数器”,然后在 cmd 提示符中输入我觉得有趣的名称,如下所示:

typeperf "\Web Service(_Total)\Connection Attempts/sec"

我能够测试很多,看看有什么用处。

希望对你有帮助,

=德文郡

【讨论】:

以上是关于在自托管 Web 应用程序中使用性能计数器的主要内容,如果未能解决你的问题,请参考以下文章

从非托管代码更新性能计数器

如何使用性能计数器监控 WCF 服务正常运行时间?

在 Web 应用程序的压力测试期间记录性能时,我应该在 Windows 性能监视器中使用哪些计数器?

用于远程可视化 ASP.NET 性能计数器的 Web 界面

Web 服务性能监控的最佳方式

Web 应用程序负载测试:查看哪些指标?