Core file size 为0代表关闭core文件,unlimited代表开启core文件。
开启core文件以后,代表进程异常以后,会生成core文件。
使用ulimit -a 查看core文件信息。
[root@localhost ~]# ulimit -c 0
以下是参数
永久生效
默认生成路径:输入可执行文件运行命令的同一路径下
默认生成名称:默认命名为core,新的core文件会覆盖旧的core文件
设置pid作为文件扩展名:
[root@localhost ~]#echo "1">/proc/sys/kernel/core_uses_pid或者sysctl -w kernel.core_uses_pid=1
修改临时生效core文件路径
[root@localhost ~]#mkdir /corefile
[root@localhost ~]#chmod 777 /corefile
[root@localhost ~]#echo "/corefile/%e.core.%p">/proc/sys/kernel/core_pattern
[root@localhost ~]#sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t
永久生效需要配置/etc/sysctl.conf文件
[root@localhost ~]#echo "kernel.core_pattern=/corefile/%e.core.%p" >> /etc/sysctl.conf
执行kill -11 进程号会生成core文件,例如:
Kill -11 4166
查看进程异常终止生成的core文件
对于数据库产生的core文件,dm提供dmrdc工具进行core文件的分析读取,此工具可以提取出core文件中的完整sql语句
操作如下:
1.使用gdb打印堆栈信息
[dmdba@localhost bin]$ gdb dmserver /corefile/core-dmserver-4166-1669464222
2.通过gdb命令info thr获取thread 1对应线程号,一般为前面带*号的线程是导致挂库的线程。
3.查找出dmrdc解析文件中对应线程号的sql。
4.把堆栈信息发给总部专家分析。
当遇到数据库异常中止问题,我们需要及时收集信息反馈给研发进行问题定位,其中包括core文件的完整堆栈
1.使用gdb调式core文件
gdb dmserver core-dmserver-xxxxxx
2.设置堆栈输出文件名称
set logging file gdb_1125.log
3.开启记录功能
set logging on
4.打印所有线程堆栈
Thread apply all bt
5.关闭记录
set loggin off
文章
阅读量
获赞