- 浏览: 4405091 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
DUMP文件概述
为了增强故障分析能力,IBM的服务器增加了对设备故障当前环境的保存功能,就是保存一份设备故障时的内存、CPU寄存器、IO等设备的数据和状态信息,如果系统并没有停住,只是某个程序死掉,会产生CORE DUMP,在当前目录下产生一个CORE文件。而如果操作系统死掉,则产生System DUMP或者System Crash,通常会引起系统停机。DUMP的记录如下图所示。
作为一般客户通常只需要收集DUMP信息,并反馈给IBM工程师即可。当发生系统DUMP时,机器将会被宕下来。可能的原因包括:系统在进行内核操作时发生了未知的意外或者不能对其进行正常处理,都会引起DUMP。也可以由系统管理员发出命令,强制系统DUMP。
当系统进行DUMP时,DUMP管理设施自动将内核相关的数据(kernel segment0及其他由内核或者内核扩展程序记录在主DUMP表中的内存块)复制到主DUMP设备。可以把DUMP理解为系统当时的一个快照,供以后分析,分析DUMP可以在其他机器上进行,但需要复制一份此机器的内核程序,即unix_mp或unix_mp64.没有对应于DUMP的内核程序是午饭进行DUMP分析的。
DUMP的生成过程
CORE DUMP的生成过程
在进程运行出现异常行为时,例如无效地址访问、浮点异常、指令异常等,将导致系统转入内核态进行异常处理(即中断处理),向相应的进程发出特定信号例如 SIGSEGV、SIGFPE、SIGILL 等。如果应用进程注册了相应信号的处理函数(例如可通过 sigaction 注册信号处理函数),则调用相应处理函数进行处理(应用程序可以选择记录信息后生成 core dump 并退出);否则将采取默认动作,例如 SIGSEGV 的默认动作是生成 core dump 并退出程序。
进程 coredump 的时候,操作系统会将进程终止并释放其占用的资源,正常情况下,应用进程 coredump 不会对系统本身的运行造成危害。当然如果系统中存在与此进程相关的其他进程,则这些进程会受到影响,至于后果则视其对此异常的具体处理而定。
由于相关指令已经包含在可执行文件中,core 文件一般只包含进程异常时相关的内存信息。其格式可参考 /usr/include/sys/core.h 或者 AIX 帮助文档的“Files Reference”章节。我们一般需要结合 core 文件以及可执行程序,来分析问题所在
注:由于进程信号处理本质上是异步的,应用进程注册的信号处理函数中使用的例程需要保证是异步信号安全的,例如不能使用诸如 pthread_ 开头的例程。
系统 dump 生成过程
系统异常 dump 的具体过程与应用进程类似,但由于更接近底层,为了避免问题所在的资源(例如文件系统)正好包含在生成 dump 需要使用的资源中,造成 dump 无法生成,操作系统一般会用最简单的方式来生成 dump。例如系统内存小于 4G 的情况下,一般直接将 dump 生成在 pagingspace 中;大于 4G 时,会建专门的 lg_dumplv 逻辑卷(裸设备),默认的dump设备/dev/hd6,次设备是/dev/sysdumpnull保存 dump 信息。在系统重启的时候,如果设置的 DUMP 转存目录(文件系统中的目录)有足够空间,它将会转存成一个文件系统文件,缺省情况下,是 /var/adm/ras/ 下的 vmcore* 这样的文件。
下面是常见的转储设备大小规则
当服务器的内存大于4GB时,在安装AIX时,就会为系统 dump 创建一专用区域,该逻辑卷名就是 lg_dumplv. 其缺省大小是按以下规则分配的:
4GB < = 服务器的内存 〈 12GB lg_dump 的大小为 1GB
12GB < = 服务器的内存 〈 24GB lg_dump 的大小为 2GB
24GB < = 服务器的内存 〈 48GB lg_dump 的大小为 3GB
48GB < = 服务器的内存 lg_dump 的大小为 4GB
系统 dump 一般可以通过升级微码、提高系统补丁级别、升级驱动等方式解决。
环境变量设置
可以通过 /etc/security/limits 文件对各用户的基本配置参数包括 core 大小进行限制。或者通过 ulimit 更改当前环境下的 core 大小限制。
默认情况下,应用进程生成 core dump 时都使用文件名 core。为了避免同一工作目录下的进程 core 相互覆盖,可以定义环境变量 CORE_NAMING=true,然后启动进程,这样将生成名为 core.pid.ddhhmmss 的文件。可以使用 file core 命令查看 core 是哪个进程产生的。
默认情况下,应用进程 dump 时会包含所有的共享内存,如果 dump 时想排除共享内存内容,可以在启动进程之前设置环境变量 CORE_NOSHM=true.
系统有一个参数 fullcore 用于控制是否在程序 coredump 时生成完整的 core。为避免信息丢失,建议打开 fullcore。可以使用 lsattr –El sys0 查询是否将 fullcore 打开,使用 chdev -l sys0 -a fullcore=true 将 fullcore 状态更改为打开。如果想让系统DUMP后自动重新启动,(对于远程管理员比较有用,否则管理员必须到现场按开关重新启动计算机,可以执行 lsattr –El sys0 查看autorestart是否为true,使用 chdev -l sys0 -a autorestart=true 将 autorestart状态更改为打开。两者都可以通过smit chgsys的smit菜单来修改
DUMP文件管理
由于DUMP文件较为复杂而且一般都交给IBM工程师进行分析,在次本文不做讨论,下文主要探讨DUMP文件的管理。
查看当前DUMP设备的配置信息
#sysdumpdev -l
primary /dev/lg_dumplv ##主DUMP设备
secondary /dev/sysdumpnull
##次DUMP设备
copy directory /var/adm/ras
##DUMP文件拷贝目录
forced copy flag TRUE
##是否进行提示将DUMP文件复制到外设
always allow dump FALSE
##总是进行DUMP
dump compression ON
##是否启用DUMP文件压缩
type of dump traditional
注意
1.旧版本的 AIX “always allow dump”可能默认为关闭;为方便系统 crash 时问题定位,建议打开。当该选项设置为true时,当按下服务器reset按钮或者预先设定的DUMP键盘序列的时候系统会自动生成DUMP。
打开命令
#sysdumpdev -KP
关闭命令
#sysdumpdev -kP
或者使用smitty -> System Environments-> Change / Show Characteristics of System Dump 菜单设置。
2.当系统重启的时候,如果设置了force copy flag为true,可以有提示让你将dump复制到外置介质,例如磁带。这样磁盘目录不够的时候,也有机会保留(往往DUMP设备与系统交换分区共用同一逻辑卷,而系统启动后,交换区将被覆盖)一份系统DUMP。
3.如果想允许DUMP文件进行压缩,则使用下列命令
打开命令
#sysdumpdev -CP
关闭命令
#sysdumpdev -cP
sysdump命令使用示例
创建DUMP设备
#mklv -y dumplv -t sysdump rootvg 10
将逻辑卷 hd7 临时指派为主要转储设备:
#sysdumpdev -p /dev/hd7
估计需要的转储设备大小:
#sysdumpdev -e
或者
smit dump_estimate
将磁带设备 rmt0 临时指派为辅助转储设备:
#sysdumpdev -s /dev/rmt0
显示先前的转储的统计信息:
#sysdumpdev -L
永久地将主要转储设备的数据库对象更改到 /dev/newdisk1,输入:
#sysdumpdev -P -p /dev/newdisk1
确定是否存在新的系统转储,输入:
#sysdumpdev -z
如果最近发生了系统转储,则会出现与下列相似的输出:
4537344 /dev/hd7
将远程转储文件 /var/adm/ras/systemdump(在主机 mercury 上)指派给主要转储设备,输入:
#sysdumpdev -p mercury:/var/adm/ras/systemdump
在主机名和文件名之间必须输入冒号 :。
指定系统崩溃后转储要复制到其上的目录(如果转储设备是 /dev/hd6),输入:
#sysdumpdev -d /tmp/dump
这会在系统崩溃后试图将转储从 /dev/hd6 复制到 /tmp/dump。如果在复制过程中出现了错误,那么系统继续引导,但是丢失了转储。
指定系统崩溃后转储所要复制其上的目录,如果转储设备是 /dev/hd6,输入:
#sysdumpdev -D /tmp/dump
这会在崩溃后尝试将转储从 /dev/hd6 复制到 /tmp/dump 目录。如果复制失败,那么会提示您一个菜单以允许手工将转储复制到某个外部介质。
errpt报错E87EF1BE的解决方案
E87EF1BE 0926082807 P O dumpcheck The largest dump device is too small.
信息.断定为存放dump文件的lg_dumplv容量不够.一般推荐的 dump device 值大小为 sysdumpdev –e 估计值的 1.5 倍。
需要扩容.扩容步骤如下:
1.查看lg_dumplv大小的估计值
#sysdumpdev -e
0453-041 Estimated dump size in bytes: 1287651328
即1.2G
2.现在lg_dumplv大小
#lslv lg_dumplv
其中PP SIZE: 256 megabyte(s)
PPs: 4
经计算,现在容量为1G.需要扩容0.2G
3.查看lg_dumplv所在的vg的容量是否够用
#lsvg rootvg
其中 PP SIZE: 256 megabyte(s)
TOTAL PPs: 1092 (279552 megabytes)
FREE PPs: 826 (211456 megabytes)
经计算,vg剩余容量为206.5G,因为根盘做了镜像.故,可用剩余容量为103G左右.因pp size为256m,故扩容2pps,即0.5G(其实扩1个pp也可以.2个放心点.)
4.扩容操作
#extendlv lg_dumplv 2
如果是PAGING空间的DUMP话,应该
#chps -s n hd6
(n为多少LP)
5.检查当前lg_dumplv的大小.
#lslv lg_dumplv
其中 PP SIZE: 256 megabyte(s)
PPs: 6
即,现在容量为1.5G.
6.使用dumpcheck命令查看,是否还出现errpt信息
#/usr/lib/ras/dumpcheck
#errpt
不出现,则为成功.
参考至:《走进IBM小型机世界》Orian著
http://www.kuqin.com/aixcmds/aixcmds5/sysdumpdev.htm
http://tech.cncms.com/os/unix/83840.html
http://jbweng.blog.163.com/blog/static/677153320101114101013796/
http://www.ibm.com/developerworks/cn/aix/library/0806_chench_core/#2. 应用进程 core dump 分析 |outline
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
AIX上的FTP设置(原创)
2013-02-18 13:31 26323FTP服务 FTP是用于Internet上的控制文件双向 ... -
AIX服务详解(原创)
2012-08-20 17:30 9950AIX服务概述 在Windows中,服务标志着一个组 ... -
aix的lvm管理
2012-03-07 22:27 0逻辑卷管理概念 物 ... -
浅解逻辑分区LPAR与DLPAR(原创)
2011-09-16 16:22 6973作为一个DBA,对操作系统及底层硬件的了解也许不是那么至关重要 ... -
利用IBM硬件信息中心定位硬件问题(原创)
2011-09-14 18:11 9860本文主要是通过一次对AIX服务器的硬件故障排查过程来引进一个故 ... -
AIX的vmstat命令详解(原创)
2011-08-24 14:54 20334vmstat概述 vmstat 命令报告关于 ... -
AIX的sar命令详解(原创)
2011-08-24 10:41 9515sar概述 sar 命令将 操 ... -
AIX的topas命令详解(原创)
2011-08-22 15:37 20971topas概述 topas 命令报告选定的本地系统活 ... -
AIX的SVMON命令详解(原创)
2011-08-19 16:04 26332svmon概述 svmon 命令用于显示当前内存 ... -
AIX内存概述(原创)
2011-08-19 11:30 2999VMM概述 虚拟内存管 ... -
AIX的/etc/filesystems详解(原创)
2011-08-16 16:59 8943etc/filesystems概述 文件 ... -
AIX中的fsck详解
2011-08-13 16:42 4967在AIX系统中fsck命令的用途 当执行fsck 命令时, ...
相关推荐
在IBM AIX操作系统环境下,Java应用服务器可能会遇到各种运行时问题,这时系统会生成dump文件以供诊断。"AIX dump分析工具"是专门用于解析和理解这些dump文件的工具,帮助管理员识别并解决Java应用服务器的问题。...
1. **引入Windows API**:由于Dump文件主要是Windows系统上的概念,所以生成Dump文件需要使用Windows API,如MiniDumpWriteDump。在C++代码中,需要包含`<windows.h>`头文件来访问这些API。 2. **定义异常处理函数*...
Dump文件是一种用于记录系统或应用程序在异常崩溃时内存状态的文件,它包含了程序运行时的内存快照,通常用于故障排查和调试。将Dump文件转换为txt文本文件可以帮助开发者更方便地阅读和分析这些数据,寻找可能导致...
在Windows操作系统上,当应用程序遇到未捕获的异常或错误时,生成dump文件是一种非常有用的调试手段。dump文件包含了程序崩溃时的内存快照,包括堆栈信息、进程和线程状态、全局变量等,可以帮助开发者分析问题的...
AIX 下的 core dump 分析入门.mht,html文档,请大家参考以下
在IT行业中,dump文件是一种常见的数据转储格式,通常用于记录系统或应用程序的内存状态,以便于调试和故障排查。本文将深入探讨dump文件、如何使用对比软件进行分析以及与IC卡相关的技术。 首先,我们需要了解dump...
Dump文件编辑中文版 分析DUMP文件数据 修改数据
为了防止Heapdump文件因过大而被截断,需调整AIX系统的内核参数`ulimit -f unlimited`。这一步骤确保了Heapdump文件可以完整地记录所有必要的信息。 #### 步骤4:保存配置并重启应用服务器 在完成上述配置后,记得...
本文将详细介绍 coredump 文件的生成和解析过程,涵盖了 coredump 文件生成环境的设置、交叉编译执行文件、coredump 文件的生成、PC 端的 arm-gdb 解析等方面。 一、coredump 文件生成环境的设置 在 Linux 操作...
在C++编程中,"dump文件生成类"是一种用于调试和故障排查的工具。当C++程序因某种原因崩溃时,系统或应用程序可以生成一种叫做dump文件的数据结构,它包含了程序运行时的状态信息,如内存状态、堆栈信息、线程状态等...
在Qt和Visual Studio(VS)环境下进行软件开发时,生成dump文件是一种常见的调试手段。当应用程序崩溃或出现未预期的行为时,dump文件可以保存程序运行时的状态,包括内存分配、线程信息、堆栈跟踪等,这对于定位...
4. **分析dump文件**:生成dump文件后,开发者可以使用诸如Visual Studio、WinDbg、 windbg preview 或其他第三方工具(如MadExcept、Visual Studio的Live Share Debugging)来打开并分析dump文件,查找导致程序崩溃...
### Dump文件作用与生成详解 #### 一、Dump文件概述 **Dump文件**,作为程序崩溃后的重要诊断工具,其存在对于快速定位并解决问题起到了关键性的作用。在本篇文章中,我们将详细介绍Dump文件的含义、生成方法及其...
在IT行业中,生成dump文件是一项重要的故障排查技术,尤其是在处理应用程序崩溃或挂起等问题时。在本场景中,我们关注的是使用Visual Studio 2013(VS2013)这一开发工具来生成dump文件。dump文件包含了程序运行时刻...
在编程领域,生成Dump文件是一项重要的调试技巧,尤其是在C++编程中。Dump文件可以记录程序运行时的状态,包括内存分配、线程信息、堆栈跟踪等,有助于开发者分析程序崩溃或异常的原因。在这个"VS2010 C++程序生成...
在Windows操作系统中,当应用程序发生异常崩溃时,为了找出导致崩溃的原因,我们通常会借助于dump文件进行调试。Dump文件是系统在程序崩溃时记录的内存快照,它包含了程序运行时的关键信息,如进程内存、线程状态、...
当JVM遇到问题,如内存溢出或长时间的垃圾回收,它可能会生成堆栈转储(dump)文件,这些文件包含了JVM在特定时刻的详细状态,包括对象、类加载器、线程、堆和栈信息。"Jvm堆栈dump文件分析"是指通过特定工具对这些...
用于分析dump文件,很好用的一款内存分析工具,可以用来分析OOM等问题
Core Dump 文件调试 Core Dump 文件调试是指使用 GDB 调试 Core Dump 文件的过程。Core Dump 文件是操作系统执行的一个动作,当某个进程因为一些原因意外终止(crash)的时候,操作系统会将这个进程当时的内存信息...
DumpTool主要用来在用户机器上对目标进程生成dump文件,定位“卡死”、Crash等问题。 (1)MiniDump: 表示生成一个包含必要信息的dump文件,文件大小约200-500k,具体Flag =MiniDumpNormal|...