ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

c# – 如何在IIS上运行的dotnet Core应用程序中获得可见/调试高内存使用率

2019-05-22 21:55:52  阅读:226  来源: 互联网

标签:c iis asp-net-core aspnetboilerplate kestrel-http-server


我们有一个应用程序,我们最近移植到使用Aspnet boilerplate框架,并有许多关于内存使用的问题.我们的初始症状是强烈的内存使用,在高使用时间没有减轻.内存使用量在夜间和周末增加,但不会达到高峰期的速度.当我输入这个时,我正在监视并看到当正常使用量最多为500-550mb时,应用程序在系统上使用超过5Gb的内存.我们使用几个内存分析工具来分析应用程序,发现框架库和我们引用的Kestrel版本中存在一些潜在的泄漏,但即使在修复问题之后,占用空间仍然很大.我们现在看到的行为是应用程序的内存使用量将无限增长,但强制内存分析工具中的垃圾收集将恢复大量内存.周末监控应用程序显示该应用程序在轻度使用情况下正常运行,但今天(星期一)在高峰时段应用程序再次出血.我不确定要采用什么方向,或者如何了解实际问题.内存分析工具在这方面没有显示任何明显的泄漏或问题,并且通过强制垃圾收集来回收内存的事实对我来说似乎是可疑的.

解决方法:

Kestrel处理垃圾收集(GC)与IIS上的ASPNET略有不同. Kestrel能够比ASPNET快得多,其实现这一壮举的方法之一就是降低GC压力.这是一篇提供更多细节的文章:

https://www.poppastring.com/blog/ASPNETCoreKestrelTheNeedForSpeed.aspx

考虑到Kestrel GC认为是长期存在的对象,您可能需要重写代码.没有任何具体细节,我无法提供更多帮助,但听起来您的代码正在释放您的代码,而不是通过正常的GC流程及时收集.

标签:c,iis,asp-net-core,aspnetboilerplate,kestrel-http-server
来源: https://codeday.me/bug/20190522/1154363.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有