[转帖]生产环境(基于docker)故障排除? 有感于博客园三番五次翻车
生产环境(基于docker)故障排除? 有感于博客园三番五次翻车
https://www.cnblogs.com/JulianHuang/archive/2019/08/19/11365593.html
如题,有感于博客园最近多次翻车,感觉像胡子眉毛一把抓, 定位不了生产环境的问题。
抛开流程问题,思考在生产环境中如何做故障排除, 发现博客园里面这方面的文章比较少。
.
Net 本身是提供了相关工具帮助我们在生产中故障排除: https://docs.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension
工具的思路是在生产环境中dump出进程快照文件,通过分析快照堆栈、线程信息、异常信息判断运行状态。
这个工具依赖的文件很多很杂,国外大牛已经针对 .NetCore制作了工具镜像
How to Use#
docker run --rm -it -v /stripe/upload/coredump:/tmp/coredump 6opuc/lldb-netcore
- /stripe/upload/coredump - docker宿主机上崩溃进程的coredump文件路径
Usecases#
Analyze running container#
1.找到需要分析的容器id (docker ps),例如: b5063ef5787c
2.运行包含 createdump工具的容器(需要sys_admin,sys_ptrace特权), 如果运行的容器已经包含这个特权,可附加到运行的容器并在容器中执行createdump工具
docker run --rm -it --cap-add sys_admin --cap-add sys_ptrace --net=container:b5063ef5787c --pid=container:b5063ef5787c -v /tmp:/tmp 6opuc/lldb-netcore /bin/bash
b5063ef5787c - 待分析的容器id
/tmp - 主机上临时目录,coredump 文件将会在此生成
3. 找到待分析dotnet 进程PID
ps aux
这个例子PID 是“7”
4. 生成dotnet进程的 coredump文件,并退出容器
createdump -u -f /tmp/coredump 7 # 7是dotnet 进程idexit
5. 使用debugger打开coredump文件
docker run --rm -it -v /tmp/coredump:/tmp/coredump 6opuc/lldb-netcore
example output:
(lldb) target create "/usr/bin/dotnet" --core "/tmp/coredump" Core file '/tmp/coredump' (x86_64) was loaded. (lldb) plugin load /coreclr/libsosplugin.so (lldb) sos PrintException There is no current managed exception on this thread (lldb)
6. 在lldb shell 继续探索
help
lldb使用方式可参考 https://docs.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension
General Practices#
该DockerHub Repo还提供了基于docker 生产故障排除的常见用例:
- Process hang with idle CPU
- Process hang with high CPU usage
- Process crash
- Excessive memory usage
这个镜像对于基于容器的故障排除相当有用,不敢自称原创镜像;
分享给大家, 希望园友通过经历生产环境的故障排除,进阶为资深研发。
+ dotnet core调试docker下生成的dump文件
+ Windbg程序调试系列-索引篇
码甲拙见,如有问题请下方留言大胆斧正;码字+Visio制图,均为原创,看官请不吝好评+关注, ~。。~
本文欢迎转载,请转载页面明显位置注明原作者及原文链接。
转载于:https://www.cnblogs.com/jinanxiaolaohu/p/11410665.html
[转帖]生产环境(基于docker)故障排除? 有感于博客园三番五次翻车相关推荐
- 生产环境(基于docker)故障排除? 有感于博客园三番五次翻车
前言 如题,有感于博客园最近多次翻车,感觉像胡子眉毛一把抓, 定位不了生产环境的问题. 抛开流程问题,思考在生产环境中如何做故障排除, 发现博客园里面这方面的文章比较少. .Net 本身是提供了sos ...
- 基于Docker容器的HEXO博客
基于Docker容器的HEXO博客 介绍 hexo是一个基于Node.js 快速.简洁且高效的博客框架. Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 O ...
- python自动输入账号密码_Python如何基于selenium实现自动登录博客园
这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...
- python基础教程:Python如何基于selenium实现自动登录博客园
这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...
- 基于webmagic实现爬取博客园的所有精品文章
最近有一些工作上的需要,需要接触到爬虫来爬取数据.之前有使用过Python实现一个很简单的爬虫Demo,这次由于公司使用的是Java爬虫,基于webmagic框架去实现的爬虫.于是就参考了资料自己学习 ...
- 三分钟搭建自己的专属博客(基于Docker solo搭建个人博客)
我的博客演示:http://49.233.150.105/ 域名备案有些麻烦,所以暂时用ip访问 准备工作 服务器一台(必选),域名一个(可选) 1. Docker部署 不懂参考我这里的教程: lin ...
- centos java 集成环境搭建,CentOS上搭建Tomcat环境并配置服务自启动 - Sonnyb - 博客园...
下载安装JDK 卸载原装的OpenJDK(如果有) # 查看是否安装Java java -version # 查看Java的安装包信息 rpm -qa | grep java # 卸载原装Java,为 ...
- 生产环境运行Docker的9个关键决策
本文讲的是生产环境运行Docker的9个关键决策,[编者的话]生产环境运行Docker并没有想象的那么简单,如何实现稳定安全的部署和扩容? 又有哪些需要考虑的关键决策? 本文就此做了一些分析和阐述,赶 ...
- spring boot 与 iview 前后端分离架构之开发环境基于docker的部署的实现(三十六)
spring boot 与 iview 前后端分离架构之开发环境基于docker的后端的部署的实现(三十六) 公众号 基于docker的后端的部署 安装mysql数据库 创建数据库 安装redis 安 ...
最新文章
- Centos服务器常用安装指南
- 新病毒仿熊猫烧香 利用 Vista系统漏洞疯狂传播
- 程序员的一个爬虫,把估值175亿的马蜂窝给捅了
- 一幅图看懂Python编程
- 创客更新装备 动态规划
- Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】
- 房天下数据爬取及简单数据分析
- notepad++以16进制查看文件
- CSS3边框图片、边框阴影、文本阴影
- hihocoder第237周:三等分带权树
- 基于Modbus TCP-IP协议的WEINVIEW HMI与PC通讯
- 怎么把一张暗的照片调亮_拍摄一张好照片有哪些步骤?看完这篇实操文章你就懂了...
- 【压缩感知OMP算法】OMP算法的Matlab版本
- GBK字库制作、字模数据读取、使用
- Java-Scala编程规范超精简
- 一个按键控制数码管的开和关_按键控制数码管显示
- mysql跨库查询语句mybatis_mybatis实现跨库多表查询
- 【Elasticsearch源码】 GET分析
- Proxmox Mail Gateway (PMG) 安装及简单设置
- 利用PPt画卷积神经网络