我正在构建基于客户端服务器的解决方案;客户端是桌面应用程序,服务器是Web应用程序。
基本上,我需要监视客户端的性能和资源利用率,客户端是基于.NET 2.0的Windows桌面应用程序。
我需要监控的最重要的事情是客户端使用的网络资源,即从客户端流向服务器的数据大小是多少,以及大小是多少客户端从服务器下载的数据。
除此之外,一般性能监控也会有所帮助。
请指导。
编辑:有些人建议使用perfmon,但不是系统范围内perfmon中显示的值?我需要这些基于网络的统计数据仅用于单个应用程序......单个桌面应用程序发送和接收的字节数。
答案 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来监控呼叫并检查监控结果非常简单),对于其他人,您需要使用低级流量分析器(如Wireshark或MS 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数据包捕获之上的超级智能层。您需要查看数据包以了解在网络上运行时应用程序行为的真实性质。