Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 在Docker容器中运行时的.NET Core评测_Visual Studio_Docker_Asp.net Core_.net Core_Profiling - Fatal编程技术网

Visual studio 在Docker容器中运行时的.NET Core评测

Visual studio 在Docker容器中运行时的.NET Core评测,visual-studio,docker,asp.net-core,.net-core,profiling,Visual Studio,Docker,Asp.net Core,.net Core,Profiling,我正在使用asp.net core 2.2和Visual Studio 2019。我的应用程序运行的容器是Debian(官方aspnet:2.2 docker映像之一) 所以我的情况是这样的。我有一个应用程序,它由4个运行在docker容器中的微服务组成,我发现在加载时容器节点上的cpu使用率非常高。我想做的是分析正在执行的代码,以了解这种资源使用发生在哪里 作为一个起点,我想我只需要在本地开发环境上运行一些评测,就可以大致了解执行情况。虽然在Kubernetes中运行,但我有一个使用docke

我正在使用asp.net core 2.2和Visual Studio 2019。我的应用程序运行的容器是Debian(官方aspnet:2.2 docker映像之一)

所以我的情况是这样的。我有一个应用程序,它由4个运行在docker容器中的微服务组成,我发现在加载时容器节点上的cpu使用率非常高。我想做的是分析正在执行的代码,以了解这种资源使用发生在哪里

作为一个起点,我想我只需要在本地开发环境上运行一些评测,就可以大致了解执行情况。虽然在Kubernetes中运行,但我有一个使用docker compose的开发环境,我发现VisualStudio docker工具相当不错

我希望使用一些VisualStudio评测工具。我能够在一个本地运行的容器上安装VSDBG,并使用VS连接到它,但在诊断窗格中我看到“诊断工具窗口不支持当前调试配置”。我也尝试过使用docker compose从VS运行项目,但是当我遇到断点时,我看到了相同的消息。关于如何做到这一点,我没有发现太多

我还尝试使用perfcollect进行评测,但在生成跟踪并使用perfviewer打开跟踪后,在尝试查看cpu堆栈时出现了解析错误。还是不知道那里发生了什么。我确实在他们描述我所看到的东西时发现了一个老的封闭问题,但最近有人评论说他们看到的是最新版本,所以可能是回归


所以。。在这一切之后。。我的问题是。上述两种方法是否可行?有没有更好的方法来实现这一点?我对有人成功地查看运行在linux docker容器上的.net core 2.2应用程序的一些代码分析很感兴趣。我真正想做的就是能够看到我的代码中执行时间的去向以及消耗了哪些资源。正如我所提到的,当我在谷歌上搜索这个网站的时候,我并没有发现太多东西,而且我似乎一直在碰壁。如果有人对这里的方法有任何建议或指导,我将不胜感激。多谢

您是否愿意升级到.Net Core 3.0(.Net Core 2.2将在几天后失去支持:)

如果您对此持开放态度,您可以利用这个新工具,它支持在linux容器中运行,并且可以和VisualStudio中的工具一起使用

以下是我用于将其添加到项目中的步骤:

  • 更改基本映像以使用sdk映像(安装工具所需)
  • 将安装工具添加到图像中:
  • 或者,如果不想将其添加到映像中,可以在正在运行的容器中运行以下命令(只要它基于SDK映像):

  • 在不调试的情况下启动项目(Ctrl+F5)

  • 使用

  • 运行以下命令:

    dotnet-trace collect --process-id $(pidof dotnet) --providers Microsoft-DotNETCore-SampleProfiler
    
    完成收集后,按enter或Ctrl+C结束收集

    这将装箱一个名为“trace.nettrace”的文件

    默认情况下,将在其中创建文件的/app文件夹是映射到项目文件夹的卷。您可以在VS中从那里打开该文件

    dotnet tool install --global dotnet-trace
    export PATH="$PATH:/root/.dotnet/tools"
    
    dotnet-trace collect --process-id $(pidof dotnet) --providers Microsoft-DotNETCore-SampleProfiler