C# 内存消耗.Net应用程序(Azure网站)

C# 内存消耗.Net应用程序(Azure网站),c#,asp.net,memory,memory-management,azure-web-app-service,C#,Asp.net,Memory,Memory Management,Azure Web App Service,我们正在使用Azure网站作为我们的平台提供商,我正在调试一些与托管应用程序相关的内存问题,我们需要一种实用的方法来了解我的应用程序消耗如此多内存的原因 我们有大约50个在线用户,但消耗了来自120个线程的1.5 GB IIS进程。我尝试了内存转储,但没有得到足够的线索来解决这个问题。过去,我使用的是yourkit.net档案器。由于我能够监控线程及其内存使用情况,所以发现问题非常顺利 我的工作集是私有工作集中的内存量加上进程正在使用的可由其他进程共享的内存量,与私有内存非常接近 My priv

我们正在使用Azure网站作为我们的平台提供商,我正在调试一些与托管应用程序相关的内存问题,我们需要一种实用的方法来了解我的应用程序消耗如此多内存的原因

我们有大约50个在线用户,但消耗了来自120个线程的1.5 GB IIS进程。我尝试了内存转储,但没有得到足够的线索来解决这个问题。过去,我使用的是yourkit.net档案器。由于我能够监控线程及其内存使用情况,所以发现问题非常顺利

我的工作集是私有工作集中的内存量加上进程正在使用的可由其他进程共享的内存量,与私有内存非常接近

My private bytes是进程分配的无法与其他进程共享的内存的当前大小(以字节为单位)。看来我正在使用所有这些内存

但我无法决定我为什么要用这么多的记忆。对于我的系统,每个用户的成本都超过25兆字节。这对我的可伸缩性产生了真正的担忧

我安装了NewRelic,但没有从那里得到太多帮助


查看DaaS站点扩展(您可以从http://.scm.azurewebsites.net). 它有一个内存转储分析器,可以为您分析内存转储并突出显示它发现的任何问题


您可以在此处找到更多详细信息:

为什么不下载GC转储文件并在笔记本电脑上进行分析(我使用Visual Studio Ultimate,但也许您的kit.net profiler也可以导入它?)


Azure最近发布了ServiceProfile。此工具将帮助您确定密集型进程上的内存使用情况

就我个人而言,我更喜欢蚂蚁内存分析器工具来识别哪个实例导致内存问题。我们使用Azure网站。所以问题是我无法在我的pc上生成相同的流量。Azure中的环境非常不同。应用程序是否使用会话?隐藏物其他内存密集型资源?您是否将数据存储在任何静态类型中?在看不到代码的情况下,有许多事情可能会导致内存消耗,回答这个问题是一种冒险。如果每个用户都使用~25MB的内存,那么在您的本地环境中也是这样吗?或者是前10个用户每人使用1MB,但当第11个用户进入时它会跳转(例如)?探查器都支持转储分析,所以您应该首先从Azure生成转储,问题是Daas没有提供我们在生产系统上需要的信息。使用Daas进行转储会杀死活动会话,因为这会对处于高负载状态的系统造成压力stress@RıfatErdemSahin这是真的。如果您可以在手动获取的转储上使用DaaS转储分析器,只需支付转储分析的资源利用率,该怎么办?有兴趣吗?尝试过,但没有成功。我们需要知道是什么造成了泄漏。这需要在我们的生产站点上进行多个转储,而且收集这些转储需要花费太多的时间。此外,转储结果没有为我创建有意义的结果,因此我将yourkit.net安装到本地计算机上。发现这个你不能在你的机器上分析。Azure网站使用不同的框架。(据我所知)使用标准层网站和下载GC转储的选项不可用。我猜他们删除了它-我在高级层也没有看到它。