如何通过C#代码获取Kentico的内存统计信息?

背景

最近,当用户访问我的Kentico网站的几页时,我遇到了内存不足的异常。快进-我发现分配的内存(系统>常规)超过2 GB!然后,我进入“调试”>“清除缓存”,然后注意到分配的内存大约为400 MB(()。现在,当用户访问该页面时,它将可以正常运行而没有任何内存不足异常。

如何通过C#代码获取Kentico的内存统计信息?

问题

有没有办法通过代码(最好是C#)获取这些内存统计信息?我正在考虑能够在分配的内存过高时定期监视这些内存统计信息并触发警报(从C#代码发送电子邮件/帖子到Webhook)。

其他信息

  • 在Azure中托管的Kentico版本9.0.42,可扩展到2个实例。
  • 应用服务计划(在Azure中)的内存使用率大约为50%-这排除了在该级别设置警报的可能性。

谢谢!

ipqydp 回答:如何通过C#代码获取Kentico的内存统计信息?

您可以使用SystemHelper类来获取统计信息和内存数据。它仍然主要依靠.NET Process及其属性。如果您是天蓝色,则可以将上面的代码与PerformanceCounters一起使用,以记录自己的sets of information into application insights并根据这些计数器创建自己的警报。

,

如果您查看“系统”页面上的代码,则会找到答案。转到/CMSModules/System/Controls/System.ascx.cs文件并搜索Memory.Text。您会发现几种SystemHelper方法来为您获取值。

SystemHelper.GetVirtualMemorySize()
SystemHelper.GetWorkingSetSize()
SystemHelper.GetPeakWorkingSetSize()

,

Kentico建议每24小时重启您的应用一次。我建议您安排晚上重新启动实例。

,

Kentico API中似乎没有任何东西可以访问内存统计信息,但是也许这个answer可以为您提供帮助。

本文链接:https://www.f2er.com/2728530.html

大家都在问