2009-04-15 29 views
5

我正在构建一个基于客户端 - 服务器的解决方案;客户端是桌面应用程序,服务器是Web应用程序。监视(网络)资源利用和Windows应用程序的性能

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

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

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

请指导。

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

回答

2

您需要在两个部分分裂您的监控:

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

第一部分(以我的经验)常常会被忽略,因为获取新的连接通常比数据流量本身昂贵得多。

你不告诉我们有关连接之王你使用什么(低电平TCPIP呼叫,Web服务,WCF或其他什么),但我的建议是:

  • 找到一种方法,以确定如何很多时候你的应用程序调用
  • 找到任何单一呼叫多少数据的长期成本交换

如何监控这些值,服务器在很大程度上取决于从所涉及的技术,对于一些很简单(如,例如,您正在使用Web服务,设置荷兰国际集团高达Fiddler监视呼叫和检查的监测结果是非常简单),其他则需要使用低级别的流量分析仪像WiresharkMS Network Monitor工作和学习如何根据服务器的IP地址过滤流量,使用的端口和其他参数。

如果你明确你的应用程序的架构,我可以尝试更加具体。

问候 马西莫

0

你想看看perfmon(在开始菜单中的管理工具中叫做Performance Monitor)。

打开它的默认图形视图,添加一个计数器,选择网络接口,然后每秒字节数(或类似的计数器),点击确定,你就完成了。

你可以尝试其他网络计数器,因为有很多,其中一个会做你想要的。您还可以将perfmon日志保存到一个文件中,然后查看它们 - 您将看到整个图形,并且可以在部分上“放大”。或者,您可以使用原始数字保存日志式文件。

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

在Vista中,你不能添加个股更多,您可以添加整组对象下分组计数器的 - 所以我的例子,你会添加网络接口对象,然后你会看到所有的个体点击确定后图上的计数器。

+0

不是perfmon系统范围内显示的值吗? 我只需要这些基于网络的统计信息仅适用于单个应用程序......字节由单个桌面应用程序发送和接收。 – Sameet 2009-04-15 18:31:33

+0

啊是的...你可以使用进程对象和应用程序实例来查看所有的IO编号(例如I/O数据字节);不幸的是,它也包含了磁盘IO。根据msdn的 – gbjbaanb 2009-04-15 18:37:43

2

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

0

如果你想要这个内置到您的客户端代码库,而不是使用外部工具,你可以用Performance Counters让上网本和性能监视器,任务管理器等

3

网络监控的标准工具是Wireshark。 它可以让你非常flexiblely过滤网络流量。 尽管这对你的应用程序来说可能是一个过分的矫枉过正。 如果使用的是纯.NET,我建议你从他们的服务器副作用增加性能记录到你的网络类,如果你使用的是.NET类库,然后inheritate自己的类,它发送和接收数据时添加的统计数据。

2

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

如果你有团队版Visual Studio中你可以设置任意采样/仪器仪表上的桌面应用程序。然后进入会话的选项。选择Events - > Windows Kernel Trace - > Network。运行您的应用程序并让Visual Studio记录数据。然后保存报告。 (我喜欢微软这个“功能”)进入命令提示符,导航到C:\ Program Files \ Microsoft Visual Studio 8 \ Team Tools \ Performance Tools并运行“vsperfreport/CALLTRACE(filename).vsp”这将产生一个csv文件,其中包含桌面应用程序发送/接收的所有网络数据包/大小/端口等。

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

1

如果您使用的HTTP请求,这是不是您的文章清楚。您指出该服务器是一个Web应用程序,这意味着(可能错误地)我可能正在使用HTTP协议从服务器发送/接收数据到客户端。

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

如果不基于HTTP的,那么这个工具也无济于事。

1

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

0

你应该看看ACE分析师这个用例 - 认为它是对的Wireshark数据包捕获的顶部只超层。您需要查看数据包以了解在网络上运行的应用程序行为的真实性质。