Suse 12和redhat 7.5+ 修改任务数TasksMax,DefaultTasksMax,UserTasksMax等全局、用户的配置

从Redhat 7.5和Suse 12开始,在Systemd里提供了新的任务数限制,覆盖了limit.conf里的参数值。本文介绍该功能在全局默认任务数DefaultTasksMax,单元和服务级的任务数TasksMax,所有用户的任务数UserTasksMax以及单个用户任务数TasksMax的配置方法。

参考

Linux 线程数限制,Suse,redhat等

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

https://www.suse.com/support/kb/doc/?id=000015901

全局默认值DefaultTaskMax

不限制是infinity

查看

systemctl show --property DefaultTasksMax

样例,如下不限制是long正数的最大值了

[root@localhost systemd]# systemctl show --property DefaultTasksMax
DefaultTasksMax=18446744073709551615
[root@localhost systemd]#

修改

配置文件为/etc/systemd/system.conf,默认是不限制,或者512。

[root@localhost systemd]# grep TasksMax /etc/systemd/system.conf
#DefaultTasksMax=
[root@localhost systemd]#

单元或服务级(systemctl)

查看

比如 sshd服务, 如果没有则不是在这个级别做的限制。

systemctl status sshd.service |grep -e Tasks
Tasks: 1 (limit: 18100)

修改

比如 sshd服务/etc/systemd/system/sshd.service.d/override.conf

/etc/systemd/system/sshd.service.d/override.conf 
增加
[Service] 
TasksMax=18100

所有用户级的最大任务数限制

查看

通过配置文件查看

[root@localhost system]# grep UserTasksMax /etc/systemd/logind.conf
#UserTasksMax=
[root@localhost system]#

修改

修改配置文件 /etc/systemd/logind.conf,默认是注释掉的或者其它值。

[Login]
UserTasksMax = 12288

单个用户级最大任务数限制

如果没有为单个用户配置,则默认使用所有用户的参数。

查看

如下拿到所有的ID,其中带silence的是用户级的。如下gbase操作系统用户的id是6002, 对应的限制数是12288。

修改

根据操作系统的id,修改对应的配置参数,比如对应1001的。(id可通过 id 用户名获得)

/etc/systemd/system/user-1001.slice.d/50-tasksmax.conf

修改参数

[Slice]
TasksMax=18000

也可以通过如下方法立即生效

systemctl set-property user-1001.slice TasksMax=18000

备注GBase相关

GBase数据库默认没有修改服务参数,所以不单单要看全局默认参数DefaultTasksMax,还要看全局默认用户参数的值UserTasksMax。