监视(网络)资源利用率和Windows应用程序的性能

时间:2009-04-15 17:54:36

标签: c# .net performance networking resources

我正在构建基于客户端服务器的解决方案;客户端是桌面应用程序,服务器是Web应用程序。

基本上,我需要监视客户端的性能和资源利用率,客户端是基于.NET 2.0的Windows桌面应用程序。

我需要监控的最重要的事情是客户端使用的网络资源,即从客户端流向服务器的数据大小是多少,以及大小是多少客户端从服务器下载的数据。

除此之外,一般性能监控也会有所帮助。

请指导。

编辑:有些人建议使用perfmon,但不是系统范围内perfmon中显示的值?我需要这些基于网络的统计数据仅用于单个应用程序......单个桌面应用程序发送和接收的字节数。

10 个答案:

答案 0 :(得分:3)

网络监控的标准工具是Wireshark。 它允许您非常灵活地过滤网络流量。 但是,对于您的应用程序来说,这可能是一个过度的技术。 如果您使用的是纯.NET,我建议您将性能日志记录添加到服务器端的网络类中 - 如果您使用.Net库类,则从它们继承您自己的类,这些类在发送和接收数据时添加统计信息。

答案 1 :(得分:2)

您也可以使用任务管理器执行此操作。转到进程选项卡,然后查看 - >“选择列”。检查“I / O读取字节”和“I / O写入字节”。然后在进程列表中找到您的程序,您可以观察累积值。

答案 2 :(得分:2)

看一下这篇文章:http://www.codeproject.com/KB/IP/apptraffwatcher.aspx

您可以拆分源代码,并获取所需的内容,以便为您的应用程序的进程ID下载/上传。

看起来他使用此库来获取有关流量的信息:http://www.codeproject.com/KB/IP/trafficwatcher.aspx

答案 3 :(得分:2)

我尝试过perfmon,我也无法观看网络流量。但我能够在Visual Studio 2005 Team suite的Performance Explorer中使用。

如果您拥有Team Edition Visual Studio,则可以在桌面应用程序上设置Sampling / Instrumentation。然后进入会话选项。选择事件 - > Windows内核跟踪 - >网络。运行您的应用程序,让Visual Studio记录数据。然后保存报告。 (我喜欢微软的这个“功能”)转到命令提示符,导航到C:\ Program Files \ Microsoft Visual Studio 8 \ Team Tools \ Performance Tools并运行“vsperfreport / CALLTRACE(filename).vsp”这将产生一个包含桌面应用程序发送/接收/大小/端口等所有网络数据包的csv文件。

我知道这是一个冗长的解决方案,但我只是在我的.Net 2.0应用程序上尝试过,它捕获了我们与Oracle身份管理器和Oracle数据库的所有通信。

答案 4 :(得分:2)

您需要将监控分为两部分:

  • 系统如何与服务器交互(执行的呼叫数)
  • 网络流量(任何呼叫的交换数据大小)

第一部分(根据我的经验)经常被忽略,虽然它很重要,因为获取新连接通常比数据流量本身要贵得多。

您没有告诉我们您正在使用的连接之王(低级tcpip调用,Web服务,WCF或其他),但我的建议是:

  • 找到一种方法来确定应用程序调用服务器的时间
  • 查找任何单个呼叫在数据交换方面的成本计算

如何监控这些值取决于所涉及的技术,因为有些非常简单(例如,如果您使用的是Web服务,设置Fiddler来监控呼叫并检查监控结果非常简单),对于其他人,您需要使用低级流量分析器(如WiresharkMS Network Monitor),并了解如何根据服务器的IP地址,使用的端口和其他参数来过滤流量。

如果您澄清了应用程序架构,我可以尝试更具体。

此致 马西莫

答案 5 :(得分:1)

您的帖子不清楚您是否正在使用HTTP请求。您表示该服务器是一个Web应用程序,这意味着(可能不正确)我可能正在使用HTTP协议从服务器向客户端发送/接收数据。

如果是这样,可能有用的一个工具是Fiddler。此工具将监视进出工作站的所有HTTP流量,并且(我相信)可以监视特定的会话和应用程序。好的部分是您可以查看单个请求并查看这些请求的统计信息,包括字节输入/输出,往返时间以及其他有用的信息位。

如果您不是基于HTTP的,那么此工具将无济于事。

答案 6 :(得分:1)

我很惊讶没有人建议使用SysInternals(现在的Microsoft)Process Explorer(technet.microsoft.com/en-us/sysinternals/bb896653.aspx)。如果右键单击有问题的可执行文件并左键单击属性,将弹出一个对话框。然后切换到性能选项卡,您可以监视可执行文件的I / O. Performance Graph选项卡将显示随时间变化的CPU使用率和I / O字节历史记录。这是一个很酷的免费工具。

答案 7 :(得分:0)

您想要查看perfmon(在开始菜单中的管理工具中称为性能监视器)。

在默认图表视图中打开它,添加一个计数器,选择网络接口,然后选择每秒字节数(或类似的计数器),单击确定即可完成。

您可以尝试其他网络计数器,因为有很多,其中一个将完全按照您的要求进行。您还可以将perfmon日志保存到文件中并在之后查看它们 - 您将完整地看到图形,并且可以“放大”部分。或者,您可以使用原始数字保存日志样式文件。

这是一个quick guide通过perfmon作为管理工具,一旦你理解了,其余的就很容易了。

在Vista中,您无法再添加单个计数器,您可以添加在对象下分组的整个计数器集 - 所以对于我的示例,您将添加网络接口对象,然后您将看到所有单独的计数器单击确定后在图表上。

答案 8 :(得分:0)

如果您希望将此内置到客户端代码库中,而不是使用外部工具,则可以使用Performance Counters来访问性能监视器,任务管理器等报告的此内容和大多数其他内容。

答案 9 :(得分:0)

您应该查看ACE Analyst了解这个用例 - 将其视为Wireshark数据包捕获之上的超级智能层。您需要查看数据包以了解在网络上运行时应用程序行为的真实性质。