【问题标题】:How to know if I have to do memory profiling too?如何知道我是否也必须进行内存分析?
【发布时间】:2018-06-02 04:40:29
【问题描述】:

我目前对一个 ASP.NET Core 应用程序进行 CPU 采样,我向它发送大量请求(> 500K)。我看到应用程序的峰值工作集约为 300 MB,考虑到对应用程序发出的请求数量,我认为这并不大。但我观察到的是,当我在应用程序中启用某些功能时,每秒请求数会大幅下降。

问题: 我也应该进行内存分析吗?我问这个是因为即使峰值工作集约为 300MB,可能会有大量的短期对象可以由 GC 创建和收集,并且由于 GC 的工作也算作 CPU,我是否也应该进行内存分析以查看是否我分配太多了?

【问题讨论】:

  • 你看到 CPU 在 GC 上花费的时间了吗?如果这是真的,那么是的,您需要进行内存分析。我建议进行时间线分析,看看线程在做什么,然后再决定。

标签: memory-profiling dottrace perfview dotmemory


【解决方案1】:

我将根据我发现的新信息自己回答这个问题。

这基于工具 PerfView,该工具提供有关 GC 和分配的信息。

当您打开 GCStats 视图时,导航到您关心的进程的链接,您应该会看到如下信息:

注意视图有信息有% CPU Time spent Garbage Collecting。如果您看到这是> 5%,那么它应该引起关注,您应该开始内存分析。

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 2014-05-20
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多