在应用程序内部监控ASP.NET应用程序的内存使用情况

6
我正在寻找一种方法,让应用程序本身监视其使用的内存量,这样我就可以每小时记录一次并将其保存在日志文件中,以便关注应用程序的使用情况。
由于所有内容都是托管的,因此我们可以更改系统以查看发生了什么,所以解决方案必须来自应用程序代码内部。
将来,我们可能会使用内存信息来影响缓存策略。
2个回答

5

嗯,你需要多详细的信息呢?如果只是想知道内存使用情况,您可以询问 GC。它知道的。 ;)

long bytes = GC.GetTotalMemory(false); // use 'false' to not wait for next collect

变量'bytes'将包含当前在托管内存中分配的字节数。我不确定托管内存是否涵盖整个进程还是仅限于AppDomain。您需要通过在一个进程中运行多个AppDomains并查看是否跨AppDomains测量托管内存分配来测试此功能。如果它们不是,则可以使用此功能来测量ASP.NET应用程序的总内存使用情况。
如果您想要更具体的信息,CLR有一个诊断API可供您与之交互。还有很多内存分析工具,但我无法确定它们是否适用于ASP.NET应用程序。

1
作为替代方案,如果您想要更详细的信息,可以使用System.Diagnostics.PerformanceCounter类读取性能计数器。以下是一些可以插入的计数器:

请求的总字节数

接收的总字节数

请求等待时间

正在执行的请求数

每秒请求数

错误总数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接