gpt4 book ai didi

c# - 我需要使用MS Debug Diagnostic Tool来分析CPU使用率较高的C#应用​​程序的帮助

转载 作者:行者123 更新时间:2023-11-30 17:26:45 30 4
gpt4 key购买 nike

我有一个.NET多线程应用程序。它通过网络接收和发送许多UDP数据包,并且进行了大量的计算。

我每天都打开此应用程序,它在整个工作时间窗口内正常运行。 (通过任务管理器检查的)并发线程数通常在60到90之间变化。CPU使用率变化很大,并且偶尔会有一些峰值,使服务器的CPU使用率达到100%。但是我会说该应用程序的平均CPU使用率很低,不到5%。

有时,在某些随机的日子里,通常当接收到的数据包数量比平时多时,此应用程序的并发线程数会增加到〜250,并且服务器的CPU使用率保持100%不变。该应用程序未使用全部100%的内存(因为此服务器上正在运行其他应用程序),但是它使用了所有可用的CPU,使总利用率达到100%。

线程的数量不会持续增加,就像出现某种死锁或内存泄漏一样。但是它也不会随着时间的流逝而减少。该进程使用的内存也不会随着时间的推移而增加,保持在没有发生问题的那几天的水平。

我相信源代码中可能存在一些错误,这些错误会触发某种无限循环或类似的循环。

根据this的帖子,我曾尝试使用Microsoft的Debug Analysis Tool v2 Update 3,但遇到了一些问题,下面将对此进行描述:

1)我按照上面链接上的所有说明进行操作。我能够创建并激活规则以检测高CPU使用率。

2)但是,当问题开始发生时,我在任务管理器上看到正在创建许多新进程(名称与我的应用程序的进程相同),一次但一个顺序,所有这些进程都具有状态“暂停”。需要明确的是:这些新的挂起进程不是由我的应用程序生成的,而是由调试诊断收集工具在开始收集转储文件的数据时生成的。

enter image description here

3)查看DebugDiag 2 Collection工具主对话框,然后将规则的状态显示为“已完成”,即使未显式取消激活规则且问题仍然存在。

enter image description here

4)然后,我使用DebugDiag 2 Analysis工具来分析生成的转储文件。我选择“Performance Analyzers/PerfAnalysis”,然后选择所有转储文件,然后开始分析。

5)分析结果如下:

enter image description here

我认为此 System.ArgumentException 与我的应用无关。我认为异常是在分析工具内部引发的,就像检查堆栈跟踪时一样。例如,我不知道是否在数据收集步骤中生成了多个具有相同名称的进程,这导致分析工具尝试在“字典”中添加具有相同键的多个记录。

事实是,这个问题使我无法找出问题的原因。我知道还有其他分析工具,例如DotTrace和ANTS,但我真的希望在迁移到商业工具之前先使用免费工具。我什至已经联系了CodeTrack的开发人员,它是免费的,看起来像是个不错的工具,但是他给我的提示和建议对我而言并不简单,因为:

  • 我的应用程序正在生产服务器上运行。
  • 在测试机上模拟生产环境并非易事,因为我正在使用实时市场数据来提供应用程序。
  • 在有人建议使用Visual Studio自己的分析工具之前,生产服务器未安装VS(我不打算在其上安装VS)。

  • 因此,我想我的真正问题是:使用MS Debug Diagnostic Tool时,有人知道我做错了吗(如果是的话)?我面临的问题真的是错误吗?是否应该在数据收集过程中创建几个挂起的流程?如何解决此问题并使其正常工作,以便可以使用它来调查我的问题?

    最佳答案

    即使您使用实时市场数据来填充应用程序,您也应该能够生成一些虚拟数据并将其置于一些随机循环中,以便测试您的应用程序的工作方式。

    为了帮助您更多,我们需要查看一些代码。正如您在帖子中提到的那样,必须存在一些可能不会让线程死亡的错误,这就是一个大问题,因为您遇到了某种僵尸进程。您的子进程应进行竞标并死亡。

    我的建议是重新检查该源代码,找到要点,并尝试设置调试环境(这很重要,如果您的代码有效,则无法检入产品!)

    关于c# - 我需要使用MS Debug Diagnostic Tool来分析CPU使用率较高的C#应用​​程序的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55906475/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com