利用dotnet-dump分析docker容器内存泄露
2021/12/15 7:17:40
本文主要是介绍利用dotnet-dump分析docker容器内存泄露,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
教程:官方文档https://docs.microsoft.com/zh-cn/dotnet/core/diagnostics/debug-memory-leak
环境:Linux、Docker、.NET Core 3.1 SDK及更高版本
示例代码:samples/core/diagnostics/DiagnosticScenarios at main · dotnet/samples · GitHub
一 运行官方示例
示例中包含了泄漏内存、死锁线程、CPU占用过高等接口,方便学习。
1,Clone代码并编译
[root@localhost ~]# cd Diagnostic_scenarios_sample_debug_target [root@localhost Diagnostic_scenarios_sample_debug_target]# dotnet build -c Release Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET ... Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:05.62
2,创建Dockerfile构建镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 COPY bin/Release/netcoreapp3.1 . ENTRYPOINT ["dotnet", "DiagnosticScenarios.dll"]
[root@localhost Diagnostic_scenarios_sample_debug_target]# vim Dockerfile [root@localhost Diagnostic_scenarios_sample_debug_target]# docker build -t dumptest . Sending build context to Docker daemon 1.47MB Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base ... Successfully built 928e512d9be4 Successfully tagged dumptest:latest [root@localhost Diagnostic_scenarios_sample_debug_target]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dumptest latest 928e512d9be4 5 seconds ago 267MB
3,启动容器
--privileged=true
参数的作用是给容器赋予root权限,后面createdump需要该支持。
[root@localhost Diagnostic_scenarios_sample_debug_target]# docker run --name diagnostic --privileged=true -p 888:80 -d dumptest a68efbfbfb13117142bac9b0c6fb9f4c5124e4490eaf4850dd17fdc612e2cfda [root@localhost Diagnostic_scenarios_sample_debug_target]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a68efbfbfb13 dumptest "dotnet DiagnosticSc…" 24 seconds ago Up 23 seconds 0.0.0.0:888->80/tcp diagnostic
看看能否访问成功 http://192.168.0.161:888/api/values
二 生成dump转储文件
很多时候问题出现在生产环境,而测试环境又很难重现,所以问题出现时优先生成一个dump文件,然后去恢复服务(重启解决大部分问题啊
这篇关于利用dotnet-dump分析docker容器内存泄露的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Docker端口:你真的公开了哪些东西?
- 2024-11-14用DOCKER在家里的实验室里搞些酷炫的玩意儿
- 2024-11-05掌握Docker:高效安全的十大最佳实践
- 2024-11-05在 Docker Compose 中怎么设置端口映射-icode9专业技术文章分享
- 2024-11-05在 Docker Compose 中怎么设置环境变量-icode9专业技术文章分享
- 2024-11-04Docker环境部署项目实战:新手入门教程
- 2024-11-04Docker环境部署资料:新手入门教程
- 2024-11-01Docker环境部署教程:新手入门指南
- 2024-11-01超越Docker:苹果芯片上的模拟、编排和虚拟化方案讲解
- 2024-11-01Docker环境部署:新手入门教程