如何查询网站快照,wordpress加dz,搜索引擎登录入口,wordpress简单的博客主题简介#xff1a; minicoredump神也#xff01; 继上一篇非典型程序员青囊搞定内存泄露问题后#xff0c;美美地睡了一觉。睡梦中#xff0c;突然金光闪闪#xff0c;万道光芒照进时光隧道#xff0c;恍惚来到大唐神龙年间。青囊此时化身狄仁杰高级助理#xff0c;陪同狄…简介 minicoredump神也 继上一篇非典型程序员青囊搞定内存泄露问题后美美地睡了一觉。睡梦中突然金光闪闪万道光芒照进时光隧道恍惚来到大唐神龙年间。青囊此时化身狄仁杰高级助理陪同狄老大和元芳及千牛卫来到案发现场一番勘察后迅速锁定真凶。虽整日伏于桌前写代码但早被生活驯服得谨小慎微、擅于察言观色的青囊亦早已悟透了这断案的奥秘。
只是站在一旁的元芳眉头紧锁面露难色...... 狄公上前问道元芳有心事
元芳起身答道“大人断案如神只是像长安这种要案频繁的地方每次案发都要出动上百千牛卫来大面积封锁现场走访上万群众耗费人力不说还严重阻塞交通影响了正常的生产秩序导致其它业务部门受损一直以来是怨声载道啊。”
狄公笑了笑手指向青囊“囊啊给你元芳哥show一下”。
青囊一阵马屁之后从袋中摸出一罗盘得意道“我这乾坤袋唤做sysAk这罗盘叫minicoredump以后如何封锁现场看它就清楚了”。元芳接过罗盘顺手摆弄了几下上面显示要封锁的现场缩小了不少官道也畅通许多。元芳脸色忧转喜不禁问道有此利器锁定现场无忧矣只是它是怎么做到的还请大人示教一下。
狄公哈哈大笑“不急且听我慢慢道来”。
什么是coredump
coredump 顾名思义就是核心转储。我们的程序在运行过程中如果发生了异常退出光靠程序自身log往往是很难定位问题根因的。操作系统提供了一套coredump机制在异常发生的时候将进程现场的vma信息存储到core文件中去。利用这个文件就能够恢复异常现场的信息定位人员可以从中获取到变量值、栈信息、内存数据程序异常时的运行位置甚至记录代码行号等等提高问题定位效率。就像断案最关键的步骤就是去获取第一手信息还原案发现场在此基础上进行案件推演。
那么coredump的流程是什么样子的呢
如下图所示当进程发生故障的时候内核就会启动coredump机制将故障现场的vma等信息转储成core文件。故障过后利用gdb加载coredump文件来还原故障现场。通过获取故障现场变量值、调用栈等信息可以快速确定故障类型锁定故障代码位置找到根因。 就像狄公每次一次断案都要先锁定发现场然后亲自勘查提取所有物证和证言结合现场信息推演还原案发经过最终锁定作案元凶。 coredump资源消耗问题
操作系统在内核态生成core文件是要将进程的有效vma信息全量dump出来。这就意味着大进程的coredump文件会非常庞大甚至可以达到TB级别。这类大文件在生成和保存过程中严重消耗了IO、CPU、内存带宽等资源对系统的稳定性带来冲击。就像之前要侦破一起大案需要封锁方圆数公里内交通动用数百警力做大量的摸排走访工作。但随着技术手段革新收集信息也更准确摸排手段也越来越精细化。同样的coredump信息收集是否也能做到精细化 minicoredump登场
“元芳啊定位问题就像咱们天天去断案一样走访的关键是要先收集到高价值的线索比如栈空间、data、bss等。其它的匿名页信息像堆空间里面的数据虽然很重要但是对于断案来说大多情况下用不到属于低线索信息。而在大进程的vma信息中低线索信息占比还非常高。因此我们要有选择、有目标地收集。这个时候就该minicoredump登场了将现场信息先筛选一遍。工作量优化了不说对正常生产影响也可以降到最小。”
青囊在一旁钦佩地望着狄老大默默地把minicoredump收录到sysAK里。这里面不仅有内存泄漏定位秘籍网络诊断利器如今还有minicoredump加持还可以有效地过滤过滤匿名页信息对core文件进行瘦身妙哉妙哉
举个栗子
如下表所示这个是一个典型的案发现场信息分布。minicoredump会针对性地进行收集标红的区间需要收集起来借助于gdb就可以帮我们将案发过程回放打调用栈和关键物证提取获取栈上变量、全局变量等信息而标绿的区域可以在必要的时候再收集不影响我们断案。
103249: ./main 0000000000400000 4K r-x-- main
0000000000600000 4K r---- main
0000000000601000 4K rw--- main #可执行文件的data段
0000000001fa5000 132K rw--- [ anon ] #堆空间
00007f8188000000 10372K rw--- [ anon ]
00007f8188a21000 55164K ----- [ anon ]
00007f8190000000 10372K rw--- [ anon ]
……
00007f819ca21000 55164K ----- [ anon ]
00007f81a0000000 10372K rw--- [ anon ]
00007f81a0a21000 55164K ----- [ anon ]
00007f81a495d000 4K ----- [ anon ]
00007f81a495e000 8192K rw--- [ anon ] #栈空间
00007f81a6dfe000 10244K rw--- [ anon ]
00007f81a77ff000 4K ----- [ anon ]
00007f81a7800000 8192K rw--- [ anon ]
00007f81a8000000 10372K rw--- [ anon ]
00007f81a8a21000 55164K ----- [ anon ]
00007f81ac15c000 4K ----- [ anon ]
00007f81ac15d000 8192K rw--- [ anon ]
00007f81ac95d000 4K ----- [ anon ]
00007f81ac95e000 8192K rw--- [ anon ]
……
00007f81ae160000 4K ----- [ anon ]
00007f81ae161000 8192K rw--- [ anon ]
00007f81ae961000 1808K r-x-- libc-2.17.so
00007f81aeb25000 2044K ----- libc-2.17.so
00007f81aed24000 16K r---- libc-2.17.so
00007f81aed28000 8K rw--- libc-2.17.so #so data段
00007f81aed2a000 20K rw--- [ anon ] #so BSS段
00007f81aed2f000 92K r-x-- libpthread-2.17.so
00007f81aed46000 2044K ----- libpthread-2.17.so
00007f81aef45000 4K r---- libpthread-2.17.so
00007f81aef46000 4K rw--- libpthread-2.17.so
00007f81aef47000 16K rw--- [ anon ]
00007f81aef4b000 136K r-x-- ld-2.17.so
00007f81af159000 12K rw--- [ anon ] #so link map
00007f81af169000 12K rw--- [ anon ]
00007f81af16c000 4K r---- ld-2.17.so
00007f81af16d000 4K rw--- ld-2.17.so
00007f81af16e000 4K rw--- [ anon ]
00007fff7eafc000 132K rw--- [ stack ]
00007fff7eb58000 8K r---- [ anon ]
00007fff7eb5a000 8K r-x-- [ anon ]
ffffffffff600000 4K r-x-- [ anon ] #syscall
total 532892K
实际表现
该要拿真实数据说话我们挑了一个真实的环境对比。同样的进程coredump文件大小从3.5G下降到了1.9G。 coredump空间缩小后不影响推栈等功能 在更为复杂的生产环境实际优化幅度可以达到80%以上业务抖动下降了30%。换句话说在引用了新技术以后封锁量减少交通也就更顺畅了。
狄公问元芳此法可好
元芳连连点头啧啧称赞minicoredump神也神也狄公了不得、了不得啊
作为高级助理的青囊站在一旁用衣袖一遍一遍擦拭罗盘心里也乐开了花。半年后狄公和元芳一行在清理大理寺档案库房眼前已然不是堆叠成山的卷宗。得益于变薄的新卷宗还腾挪出了一方天地品茶说案心旷神怡。
狄公戏问—— 在一旁的青囊正要开心突然斥候送来一份搪报狄公拆开看了说道官道上刚出了桩大案影响甚大我们要马上出发。青囊一惊从梦中醒来寻思着官道难道是新出了网络问题。欲知后事如何且听下回分解。完
原文链接 本文为阿里云原创内容未经允许不得转载。