达梦数据库宕机生成的core文件分析
本文于 132 天前发布,最后更新于 126 天前

一、修改core文件生成路径

添加存放core文件的路径

mkdir -p /home/dmdba/dmcore
chown -R dmdba.dinstall /home/dmdba/dmcore

调整core文件路径,编辑文件/etc/sysctl.conf添加对应core文件参数

kernel.core_pattern =/home/dmdba/dmcore/core-%e-%p-%s

执行sysctl -p进行生效。

备注:
core文件中符号说明
%% – 符号%
%p – 进程号
%u – 进程用户id
%g – 进程用户组id
%s – 生成core文件时收到的信号
%t – 生成core文件的时间戳(seconds since 0:00h, 1 Jan 1970)
%h – 主机名
%e – 程序文件名

如果没有按照上述配置,core文件到达2GB会截断,值为/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h,则coredump的目录在/var/lib/systemd/coredump/下,并且是以压缩的方式进行存储,一般是lz4结尾的文件。

二、分析core文件

(1)把core文件cp到磁盘空间足够的路径下,解压

lz4 -d [core文件]

(2)提供gdb读取coredump的命令行

gdb dmserver [解压后的core文件]

一直Enter,查看 dmstack.log 所有的线程
(gdb) set logging off

或者直接bt查看崩溃线程

(3)如果是SQL导致的coredump,可以扫描下具体那条SQL

[dmdba@dameng bin]$ ./dmrdc sfile=[解压后的core文件] dfile=result.txt

分析完成后在result.txt文件中找到dmstack.log中的Thread 1中的LWP号,那条SQL就是导致宕机的SQL。

三、总结

  1. 打印堆栈[gdb dmserver core文件~bt]找到LWP号
  2. 分析core文件生成SQL日志[dmrdc sfile=core.xxx dfile=result.txt],在result.txt文件中找到LWP号的SQL。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇