GaussDB-内置stack工具

GaussDB-内置stack工具

可获得性

本特性自V500R002C10版本开始引入。

特性简介

stack工具是获取数据库中各线程的调用栈的工具,用于辅助数据库运维人员定位死锁、hang等问题。

客户价值

提供函数级别的调用栈信息,提升数据库内核运维人员分析、定位死锁、hang等问题的效率。

特性描述

可以通过函数gs_stack()或者工具gs_ctl stack两种方式获取数据库中线程的调用栈。

  1. gs_stack()函数方式详见《开发者指南》的“SQL参考 > 函数和操作符 > 统计信息函数”章节。
  2. gs_ctl stack方式获取调用栈,详见《工具参考》的“系统内部调用的工具 > gs_ctl”章节。

特性增强

无。

特性约束

  1. 仅用于gaussdb进程,其他进程,如cms、gtm等不支持。
  2. 如果使用SQL的方式执行,则需要CN、DN进程处于正常状态,可连接和执行SQL。
  3. 如果使用gs_ctl的方式执行,则需要CN、DN进程处于可响应信号的状态。
  4. 不支持并发,在获取全线程栈的场景,各个线程的调用栈不处于同一时间点。
  5. 最多支持128层调用栈,如果实际情况超过128层,则仅保留栈顶的128层。
  6. 符号表没有被trip(当前release版本,使用的是strip –d,仅去掉了debug信息,符号表没有被trip,如果改为strip –s,则仅能显示指针,无法显示出符号名)。
  7. SQL执行方式仅支持monadmin、sysadmin用户。
  8. 注册了SIGURG信号的线程,才能获取调用栈。
  9. 对于屏蔽操作系统SIGUSR2的代码段,无法获取调用栈 ,如果线程没有注册signal_slot,同样无法获取调用栈。

依赖关系

无。

 
posted @ 2024-10-30 09:06  jerrywang1983  阅读(10)  评论(0)    收藏  举报