【集群恢复】Gauss DB某一节点文件描述符耗尽应急

节点文件描述符耗尽可能引起GaussDB实例重启造成集群不可用,本文主要讨论如何快速恢复集群以及后续如何预防。

以下图为例,文件由于文件描述符耗尽导致实例异常状态如下:

image.png

前提:如何确定实例异常是由于文件描述符耗尽影响的呢?可以查看主dn对应日志是否有以下日志出现,如上图所示对应为6045为主实例(对端实例6046目前状态为standby promoting状态能够说明该实例故障之前为备实例,那么6045肯定为主实例)

image.png

有以上日志出现可以继续按照以下步骤进行修复。

1、集群现场修复:

方案一:

1)查看从备日志是否有以下报错:

image.png

2)此场景下一般是由于从备wal槽位残留造成备机升主时连接从备失败,此时登录从备实例所在节点kill该实例即可。

方案二:

方案一修复失败的话可以考虑使用该方案

1)确认从备实例pg_xlog与base/dummy_standby/是为空,若不为空的话可以手动将其移动到其他路径(该场景下基本都为空)

2)手动停止处于standby promoting的实例:

cm_ctl stop -n nodeId -D 实例目录

3)kill原主实例(实例状态为need repair),登录该实例所在节点执行以下命令,让其升主:

kill pid; sleep 4; gs_ctl notify -M primary -D

2、文件描述符耗尽预防:

1)查看并修改文件描述符大小(集群内每台机器都需要修改,防止其他节点也出现该问题)

cat /etc/sysctl.conf |grep file-max

fs.file-max = 6553600

2)定期观察文件描述符使用情况:

查看机器整体文件描述符使用情况:lsof -u omm|grep urandom| wc -l

查看具体进程文件描述符使用情况:lsof -p pid|grep urandom| wc -l (pid 通过ps -ux查看,只关注gaussdb进程即可)

3)若监控到文件描述符使用达到90%左右在业务低峰期可以考虑手动kill该进程释放资源。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316630.html

(0)
上一篇 2025年10月29日 23:23
下一篇 2025年10月29日 23:25

发表回复

登录后才能评论