南大通用GBase 8a数据库集群在redhat 7.5和suse12查询报错get cluster task id fail 、create thread error with errno 11 、fork rejected by pids controller in /

GBase 8a数据库集群内部支持多线程处理,但如果系统限制了线程数量,则会报错。在SUSE 12和Redhat 7.5以上增加了新的限制参数TasksMax,需要做对应的配置调整,否则会报get cluster task id fail 、create thread error with errno 11 、fork rejected by pids controller in

原因

redhat 7.5+ 和 suse 12中,用TasksMax覆盖掉了limit.conf里线程设置。

解决

将参数 DefaultTasksMax 设为无限制后解决该问题:
修改/etc/systemd/system.conf
设置 DefaultTasksMax 的值为'infinity',重启主机

参考资料

TasksMax
对于任一 systemd 服务来说,在其服务文件中,设置 TasksMax 值来限制最大进程数。
官方术语是说设置最大任务数,落实到 cgroup 中就是 pids.max 值,所以我认为说是
进程数应该是可以的。 systemd 服务的所有属性,参见官方文档解释。

以我的 tmux@.service 文件来说,在 [Service] 下设置 TasksMax 即可

[Service]
Type=forking
User=%I
Restart=always
TasksMax=infinity # infinity 是指不限制
ExecStart=/usr/bin/tmux new-session -s %I -n %I -c /home/%I/ -d
ExecStop=/usr/bin/tmux kill-server
systemd service 文件的写法,不在本文范围内。
查看相应服务的 TasksMax 值,只需使用 systemctl status <service name> 命令即可在”Tasks: ” 一栏中看到服务当前拥有的任务数以及其上限。

DefaultTasksMax
TasksMax 的默认值由 DefaultTasksMax 指定。
在文件 /etc/systemd/system.conf 或者 /etc/systemd/user.conf 都可以设置,
分别掌管系统级服务与用户级服务的默认值。

该值默认为 512。

UserTasksMax
除了以上两个值之外,还有 UserTasksMax 值,该值限定了从一个 login-shell
中可以运行的任务数的限制。在 /etc/systemd/logind.conf 的 [login] 段下设置。

默认为 4096。

样例

[root@dbserver etc]# systemctl show --property DefaultTasksMax
DefaultTasksMax=18446744073709551615
[root@dbserver etc]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.5 (Maipo)
[root@dbserver etc]#

南大通用GBase 8a数据库集群在redhat 7.5和suse12查询报错get cluster task id fail 、create thread error with errno 11 、fork rejected by pids controller in /》有1条评论

评论已关闭。