Ant*_*rov 2 .net c# .net-core asp.net-core
我有一个在 Kubernetes 中运行的 ASP.NET Core 进程。突然出现问题,CPU 使用率从 8% 跃升至 100%,并稳定在该水平。内存使用情况没有改变,因此看起来像是线程中的无限循环。
我可以使用哪些工具来诊断过程中发生的情况?
我应该怎么做才能将来诊断出此类问题?
.net core 支持一些命令,让我们诊断 CPU 高或内存问题。
一、安装工具
dotnet tool install --global dotnet-trace
dotnet tool install --global dotnet-counters
Run Code Online (Sandbox Code Playgroud)
然后我们可以用来dotnet-trace ps获取我们想要跟踪的进程ID。
然后使用dotnet-counters命令我们可以看到进程使用资源的情况。
dotnet-counters monitor -p 22884 --refresh-interval 1
Run Code Online (Sandbox Code Playgroud)
-p:您要跟踪哪个进程ID--refresh-interval:从命令行窗口刷新监视器屏幕的频率(单位是秒)如果你只想关注 cpu-usage 你可以尝试添加这个参数
--counters System.Runtime[cpu-usage]
当我们使用上面的命令时,我们将获得大量运行时信息,可以帮助我们从您的进程中进行诊断。
[System.Runtime]
% Time in GC since last GC (%)
Allocation Rate (B / 1 sec)
CPU Usage (%)
Exception Count (Count / 1 sec)
GC Committed Bytes (MB)
GC Fragmentation (%)
GC Heap Size (MB)
Gen 0 GC Count (Count / 1 sec)
Gen 0 Size (B)
Gen 1 GC Count (Count / 1 sec)
Gen 1 Size (B)
Gen 2 GC Count (Count / 1 sec)
Gen 2 Size (B)
IL Bytes Jitted (B)
LOH Size (B)
Monitor Lock Contention Count (Count / 1 sec)
Number of Active Timers
Number of Assemblies Loaded
Number of Methods Jitted
POH (Pinned Object Heap) Size (B)
ThreadPool Completed Work Item Count (Count / 1 sec)
ThreadPool Queue Length
ThreadPool Thread Count
Time spent in JIT (ms / 1 sec)
Working Set (MB)
Run Code Online (Sandbox Code Playgroud)
更多详细信息,您可以查看调试 .NET Core和dotnet-counters中的高 CPU 使用率
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |