达梦core文件分析
达梦core文件分析步骤
配置系统生成core文件的路径
vim /etc/sysctl.conf
kernel.core_pattern = /dmdata/core.%p
执行sysctl -p使配置生效
vim /etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
ulimit -c 查看用户生成core文件的大小限制
检查core文件输出路径cat /proc/sys/kernel/core_pattern,检查显示的目录空间是否足够,空间需要大于1.5倍物理内存大小;
检查系统能否生成core,且产生的文件在指定目录,可以通过新建测试实例,手动kill -s 11
一、数据库版本信息
select id_code
二、coredump文件信息
Coredump文件名:
Coredump文件大小:
Coredump文件产生时间:
三、Coredump文件崩溃线程堆栈信息及SQL语句
提供gdb读取coredump的命令行截图:
这里要切换到达梦安装目录bin下面执行 cd /hoem/dmdba/dmdbms/bin
gdb ./dmserver core.1211864
上面可以看出,core文件是由达梦应用程序产生的
记录当前崩溃线程堆栈:
(gdb) bt
记录当前崩溃线程号:
(gdb) info threads
前面有*为当前线程,LWP后面为线程号,如上图为4033973。
上面是在非安装bin目录下执行,打印信息的时候后面有很多? 查询具体信息需要在bin目录执行,如下所示
thread apply all bt 记录当前所有崩溃线程堆栈
四、Coredump文件所有线程堆栈信息及所有的SQL语句
cd /home/dmdba/dmdbms/bin
./dmrdc sfile=/dmdata/core.1211864 dfile=result74.txt
五 根据生成的文件查看结果
cat result74.txt
(从dmrdc的结果中找步骤3对应的4033973线程号,!#%&*^$@[线程号]): 单独执行SQL语句是否可重现问题:
6 如果不是由达梦sql产生的core文件,则result.txt不会生成任何内容,如下这种