1

在很长一段时间内监视我的 C#/.Net windows 服务的内存使用情况的最佳可用工具是什么。据我所知,像 perfmon 这样的工具可以在短时间内监控内存使用情况,但不能在很长一段时间内以图形方式监控内存使用情况。我需要几天的趋势数据,而不是几秒钟。

需要明确的是,我想在很长一段时间内以精细的细节水平监控内存使用情况,并让图表同时显示整个时间范围和细节水平。我需要一个小的采样间隔和一个大图。

4

7 回答 7

5

在我看来,Perfmon 是执行此操作的最佳工具之一,但请确保根据您希望监控的时间正确配置采样间隔。

例如,如果你想监控一个进程:

  • 1 小时:我会使用 1 秒的间隔(这将生成 60*60 个样本)
  • 1 天:我会使用 30 秒的间隔(这将生成 2*60*24 样本)
  • 1 周:我会使用 1 分钟的间隔(这将生成 60*24*7 样本)

使用这些采样间隔,Perfmon 应该可以毫无问题地生成漂亮的计数器图形输出。

于 2008-09-18T22:25:28.180 回答
3

好吧,我使用了 perfmon,将结果导出到 csv,然后使用 excel 进行统计。上次我需要监控流程时效果很好

于 2008-09-18T22:21:10.827 回答
1

玩弄计算机管理(假设您在这里运行 Windows),似乎您可以让它随着时间的推移监控一个进程。转到计算机管理 -> 性能日志和警报并查看计数器/跟踪日志。右键单击计数器日志并添加一个新日志。现在单击添加对象并选择内存。现在单击添加计数器并将“性能对象”更改为进程,然后选择您的进程。

于 2008-09-18T22:28:09.187 回答
1

与监控内存本身一样好,您可能正在考虑使用内存分析来识别泄漏或陈旧对象 - http://memprofiler.com/是一个不错的选择,但还有很多其他选择。

如果您想做一些非常具体的事情,请不要害怕编写自己的基于 WMI 的记录器,该记录器在计时器上运行 - 您可以通过电子邮件将其发送给您处理统计信息,当它增长过快或过高时发出警告,将其发送为用于图表等的 XML

于 2008-09-18T22:34:47.330 回答
0

如果您熟悉 Python,则很容易为此编写脚本。

Activestate Python (免费)通过win32process模块公开了 Win32 API 的相关部分。

您还可以查看所有与 win32 相关的模块 或使用gotAPI浏览 Python 标准库。

于 2008-09-18T22:44:45.980 回答
0

我建议使用软件验证中的.Net Memory Validator工具。这个工具帮助我解决了与我必须使用的 .Net 应用程序中的内存管理相关的许多不同问题。

我更频繁地使用 C++ 版本,但它们非常相似,而且您可以实时看到正在分配的对象的类型这一事实对您来说是无价的。

于 2008-09-21T12:56:14.037 回答
-1

如果您需要比 perfmon 更强大的功能,我会使用 ProcessMonitor。

于 2008-09-18T22:20:51.700 回答