KingbaseES V8R2集群运维案例之---crond资源限制导致failover切换
案例说明:
KingbaseES V8R2集群主库kingbasecluster进程‘ping 网关’故障,导致failover切换,发现主库kingbasecluster进程fork子进程‘ping’故障,导致主库无法ping网关。
适用版本:
KingbaseES V8R2
一、问题现象
主备发生failover切换,查看主库cluster.log日志,如下图故障:
集群通过ping网关地址判断集群网络的连通性,如上图所示,kingbasecluster fork ping子进程时失败,判断是主库主机内核资源限制所导致。
二、问题分析
1、查看资源limit配置
如下图所示,系统主机内核资源limit配置,应该可以满足当前主机服务的需求:
2、查看cgroup下TasksMax限制
如下图所示,对systemd下的进程crond查看,有个‘Tasks: limit 512’的限制:
查看systemd配置文件:
[kingbase@node102 kingbase]$ cat /etc/systemd/system.conf
systemd 也提供了一个基于 cgroup 的限制资源使用的机制。对于任一 systemd 服务来说,在其服务文件中,设置 TasksMax 值来限制最大进程数。TasksMax 的默认值由 DefaultTasksMax 指定,默认为512。
三、问题解决
1、修改/etc/systemd/system.conf中 DefaultTasksMax,将参数调大或屏蔽。
2、执行systemctl daemon-reload重新加载。
3、重启crond服务,systemctl restart crond
4、再查看crond进程下子进程的限制:systemctl status crond
四、总结
此次故障,kingbasecluster和数据库,如果故障后都是通过定时任务启动的,都属于定时任务服务下的子进程,会受到定时任务的进程数量限制。