达梦数据库服务进程的文件数量限制导致网络通讯异常

在达梦数据库项目中,碰到网络通讯异常 6001的错误,检查了一下,数据库服务已经启动,防火墙已经关闭,最大会话数都已经修改。将数据库服务重新启动还是报错,将数据库服务停止,以前台方式启动,可以正常登录,关闭前台启动方式,以服务方式后台运行,可以正常登录了。但第二天又出现网络通信异常的错误。
异常的时候,数据库登录提示创建SOCKET连接。失败日志有很多告警 warning:Couldn't set socket option for set 5000 timeout5000, err_code: 88
这里首先检查用户limit资源限制,配置正常而且生效
查看实例进程
查看进程最大打开文件数 cat /proc/pid/limits,可以该看到会话的最大文件打开数为1024 
查看当前操作系统文件打开数
ls -l |grep -c .
查看当前进程文件打开数
ls -l /proc/pid/fd/ |grep -c .
将数据库服务停止,并以前台方式启动,可以看到,该会话的最大打开数为65536
关闭前台启动服务,以systemctl 启动服务之后,可以看到进程会话最大打开文件数又变为1024
问题原因及解决方案
在CentOS 7/RHEL7的系统中,使用Systemd替代了之前的SysV,因此/etc/security/limits.conf文件的配置作用缩小了一些,limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,在/etc/security/limits.conf和 limits.d 配置即可
对于systemd service的资源限制,如何配置呢?
全局的配置,放在文件/etc/systemd/system.conf和/etc/systemd/user.conf。会加载这两个对应的目录中的所有.conf文件/etc/systemd/system.conf.d/*.conf和/etc/systernd/user.conf.d/*.conf其中,system.conf是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.cont.
 DefanltLimitNOFILE=65536
注意:修改了system.conf后,需要重启系统才会生效。
针对单个Service也可以设置,编辑/usr/lib/systemd/system/DmServiceDM.service文件,或者/usr/lib/systemd/system/DmServiceDM.service.d/my-limit.conf文件,做如下配置:
[Service]
LimitNOFILE=65536
然后运行如下命令,才能生效。
systemctl daemon-reload
systemctl restart DmServiceDM.service
 
 
 
posted @ 2021-03-25 09:59  fangzpa  阅读(2123)  评论(0)    收藏  举报