【问题标题】:Memory consumption differs by environment内存消耗因环境而异
【发布时间】:2013-07-22 06:45:22
【问题描述】:

我有一个 MVC4 Web 应用程序,当卷通过它时,它在除生产环境之外的所有环境中消耗 ~400MB RAM。当在生产服务器(外部托管)上加载类似量的负载时,内存利用率会增加三倍至约 1.2GB,即使应用程序空闲,内存也不会释放。所有环境的 IIS 配置都是相同的。

还值得注意的是,应用程序在空闲时会在我的测试环境中释放一些内存,但在生产环境中不会这样做。 RAM 逐渐增加并达到 1.2-1.3GB,但从未低于 - 即使流量完全从服务器路由出去。

除了我的第三方托管平台外,我无法在任何其他环境中重现此问题,但在我最终将责任归咎于基础设施并让托管公司处理此案之前,我想知道:

a) 这是一个常见问题吗?为什么会发生这种情况

b) 我如何查看正在使用内存的内容

c) 您是否希望相同的代码根据平台消耗显着不同级别的系统资源(我知道我的主机在生产中可能有监控等,这可能会膨胀一点)

对此的任何帮助表示赞赏。

【问题讨论】:

  • 两台机器(测试和生产)是否有相同数量的 RAM?
  • 是的,两者都安装了 4GB
  • 生产环境是 IIS 8.5 (windows 2012 R2) 吗?
  • 目标框架是4.5还是4.5.1?

标签: asp.net iis asp.net-mvc-4 memory-management memory-leaks


【解决方案1】:

这是我们在不同环境中工作时通常会遇到的常见问题。这是因为系统配置、Windows 等因系统而异。

在这种特殊情况下,我们看到它有很大的不同,可能有一些循环或内存没有定期释放。

几个步骤:

  • 尝试找出问题的根源,即哪种方法需要时间。使用像 nlog 这样的记录器。
  • 如果您使用的是 Sql Server,请尝试使用分析器
  • 第三个是使用ants-performance-profiler

它还取决于访问站点的用户数量和一些死锁条件。 同样的原因可能有很多。

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 2017-12-23
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多