云数据库 GaussDB实例线程状态异常如何解决?

95 阅读2分钟

告警解释

=======

Ai Watchdog监控框架检测到有线程异常信息生成,产生此告警。

对系统的影响

告警产生后数据库处在异常状态中(数据库卡死,内存超限,磁盘卡死等),对数据库集群的高可靠会有一定影响。

可能原因

  • Ai Watchdog监控的线程因某种原因阻塞。
  • 报错退出并且启动失败。

处理步骤

  1. 在定位信息中获取节点ID,通过登录实例节点操作,登录节点。

  2. 执行命令,查看ai_watchdog_ftask_status视图,通过视图获取告警信息中出现异常的线程信息。

    1. 获取具体组件端口号。

      cm_ctl query -Cvidp

    2. gsql -d postgres -p port -r -U 用户名 -W 密码

      • 如果是备节点,需要在末尾加上 -m。
      • port:通过2.a获取。
    3. select * from ai_watchdog_ftask_status();

      回显信息中的name和thread_name分别表示超时线程和超时任务名。

  3. 当出现告警后,根据2.c中的超时线程和超时任务名,参考表1 数据库内部线程超时处理指导对产生超时告警的线程进行分析与处理。

    表1 数据库内部线程超时处理指导

    超时线程

    超时任务名

    可能造成超时告警的原因

    对应的处理指导

    checkpointer

    checkpoint_mainloop

    1. 主备机日志同步,主机事物无法提交,导致checkpoint点无法推进。

    2. checkpoint为确保redo点的一致性,最后一步fsync如果卡住,则会影响checkpoint推进。

    3. 使用命令gs_stack(pid)抓取该线程堆栈,判断是否存在commit hang,导致checkpoint无法推进。

      须知:

      gs_stack(pid):pid可通过2.c中的回显信息中的thread_id获取。

    4. 抓取该线程堆栈,判断是否存在fsync hang,导致checkpoint无法推进。

    walwriter

    walwriter_sched_setaffinity

    看护sched_setaffinity系统调用,如果超过2min系统调用还没返回,就说明系统调用卡死

    进程会自愈。

    pageredo

    page_redo_csn_list

    极致RTO插入日志到队列中阻塞。

    抓取该线程堆栈,具体分析。

    archiver

    arch_mainloop

    archive线程最慢每隔1秒会上传归档日志,如果归档慢,则可能有网络问题,会导致PITR可恢复点无法推进。

    1. OBS信息是否正确。
    2. 归档介质与备机间网络链接、网络延迟、网络丢包率是否正常。
  4. 请收集告警信息、日志信息和配置信息,联系技术支持

告警清除

此告警在线程修复自愈后,系统会立即自动清除此告警,无需手工清除。

参考信息

不涉及。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…