KingbaseESV7故障处理-core文件获取调试信息

Q: core文件调试方法

A:

一、提示信息

    数据库服务运行期间由于数据库本身的bug导致服务程序崩溃,会在/home/kingbase  或  /home/kingbase/KingbaseES/bin 路径下,生成一个core文件。

二、调试方式

1、首先进入到kingbase主程序的bin目录下,例如:

    cd   /home/kingbase/KingbaseES/bin/

2、执行gdb 命令,进入gdb调试交互界面,语法如下:

    gdb 引发core的程序名 core文件名

    例如,core文件在/dbbackup/路径下,文件名为core-kingbase-1111

    调试命令为:

        gdb  kingbase  /dbbackup/core-kingbase-1111

3、执行上述命令如果正确,则会进入交互界面。在交互界面内执行命令加载符号信息文件。语法如下:

    symbol-files  /path/kingbase_debug_file

    例如,符号信息文件为 /home/kingbase/KingbaseES/kingbasedebug/kingbase.debug,则加载命令为:

    symbol-files  /home/kingbase/KingbaseES/kingbasedebug/kingbase.debug

    回车确认后,会提示是否加载,选择y。

4、输入如下命令,将后续的调试信息都输出到一个指定文件内。

        set logging /path/filename  :设置输出的文件名

        set logging on          :这个命令输入后,此后的调试信息都会输出到上一命令指定的文件内。

5、输入命令  bt,将所有输出的信息复制到文本内,发挥公司研发人员进行分析。

6、执行  thread apply all bt命令。随后输出q命令退出。将之前设定的输出文件,整个发回公司给研发人员分析。

三、其他调试命令

1、在加载符号信息文件完毕后,执行  info threads 命令,列出线程信息。可能的结果如下(举例数据):

        6 kingbase 23456 sabc libc();

        5 kingbase 23432 ....

        4 kingbase 23123 ...

        3 kingbase 23421 ...

        2 kingbase 23415 ...

        1 kingbase 23112 ...

    这个结果中,第一列是线程号,第三列是操作系统级别上的进程号

2、执行thread x,来切换线程,再执行bt命令,打印堆栈信息。例如,需要打印编号为1 的线程,和编号为2的线程的堆栈信息。

        thread 1

输入后,会提示已经切换到该线程,随后输入命令

        bt

会打印出 线程1 对应的堆栈信息。

再次输入

        thread 2

会提示已经切换到线程2,再次输入命令

        bt

会打印出线程2的堆栈信息。

Q: 数据库core文件分析

A:

数据库异常core文件一般生成在数据库属主的家目录下:/home/kingbase

数据库core文件分析:

1、 拷贝对应数据库版本的符号信息文件到kingbase用户可访问的目录下

2、 执行gdb /home/kingbase/KingbaseES/bin/kingbase core.****

3、 添加程序符号信息Symbol_file /home/kingbase/kingbasedebug/kingbase.dug

4、 使用bt打印堆栈信息

简单进行分析如果与数据库相关,则需要反馈回公司研发人员,如果与OS相关,则联系平台管理人员进行协调;

手动生成core文件对数据库线程信息进行分析;

1、 数据库进程存在,但是数据库内存异常,对外服务出现卡顿或停止服务的现象,分析:

1)  分析操作系统I/O和内存的使用情况

I/O异常处理

a)  使用iostat工具查看:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

0.02    0.00    0.04    0.01    0.00   99.93

Device:       rrqm/s   wrqm/s  r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util

sda          0.01   0.37    0.03    0.24    0.79     4.94    20.85     0.00    8.93   1.09   0.03

内存异常处理

top命令查看数据库占用内存的情况,查看VIRT占用的情况,如果该值大于操作系统内存或该值接近mem+swap,根据RES的使用情况,则进行分析;

[root@h10-48 ~]# free -m

             total       used       free     shared    buffers     cached

Mem:        3947       858       3088       0        185        537

-/+ buffers/cache:         135       3811

Swap:         8001        0       8001

手动生成core文件方法,打印堆栈信息进行分析:

1、 gcore PID(core文件生成在当前目录下,生成core文件的目录所在的分区剩余空间必须大于TOP看到的RES值的)

2、 kill -s SIGSEGV PID

3、 使用pstack直接生成堆栈信息

数据库线程信息:

在数据库中执行:alter system set trace_memory_context = on; alter system set trace_memory_context = off;,定时执行两句生成线程信息进行分析;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值