进程打开文件数达到上限问题
问题描述
节点运行报错too many open file。
可能影响
- 应用连接数据库报错;
- 执行SQL报错。
解决步骤
- 检查数据库用户的操作系统参数是否符合预期
执行以下命令,返回值不应少于131072。
ulimit -n
如果少于,则需要检查/etc/security/limits.conf中以下配置项是否符合预期
*soft nofile 131072
*hard nofile 131072
不符合则需要修改。
- 检查/etc/security/limits.d/下是否有后缀为.conf的文件,其中是否有上述内容,如果有且不符合预期,则同样需要修改;
- 重新登录数据库用户,再次执行ulimit -n验证返回结果是否符合预期,如不符合,重新检查上述步骤;
- 检查Agent服务进程和实例节点主进程的limits环境参数是否符合预期
如:
#cat /proc/22319/limits|grep open
Max open files 131072 131072 files
其中22319为进程ID
- 如果第1/3步检查结果已符合预期,但第4步结果不符,则需要重启Agent服务和实例节点。
用户启动进程数达到上限问题
问题描述
节点运行报错unable to create new native thread。
可能影响
- 应用连接数据库报错;
- 执行SQL报错。
解决步骤
- 检查数据库用户的操作系统参数是否符合预期。
执行以下命令,返回值不应少于131072。
ulimit -u
如果少于,则需要检查/etc/security/limits.conf中以下配置项是否符合预期。
*soft nproc 131072
*hard nproc 131072
不符合则需要修改。
- 检查/etc/security/limits.d/下是否有后缀为.conf的文件,其中是否有上述内容,如果有且不符合预期,则同样需要修改;
- 重新登录数据库用户,再次执行ulimit -u验证返回结果是否符合预期,如不符合,重新检查上述步骤;
- 检查Agent服务进程和实例节点主进程的limits环境参数是否符合预期。
如:
#cat /proc/22319/limits|grep processes
Max processes 131072 131072 processes
其中22319为进程ID
- 如果第1/3步检查结果已符合预期,但第4步结果不符,则需要重启Agent服务和实例节点。
信号量不足问题
问题描述
节点启动时,报错信号量不足,报错信息示例如下:
2024-01-12 16:35:10 CST 39520FATAL: could not create semaphores: No space left on device
2024-01-12 16:35:10 CST 39520DETAIL: Failed system call was semget(1978133, 17, 03600).
2024-01-12 16:35:10 CST 39520HINT: This error does not mean that you have run out of disk space. It occurs when either the system limit forthe maximum number of semaphore sets (SEMMNI), or the system wide maximumnumber of semaphores (SEMMNS), would be
exceeded. You need to raise the respective kernelparameter. Alternatively, reducePostgreSQL's
consumption of semaphores by reducing its max_connectionsparameter.
可能影响
节点启动失败
解决步骤
- 查看当前信号量资源
#sysctl -a | grep sem
或
#cat /etc/sysctl.conf|grep sem
默认推荐设置为:
kernel.sem = 50100 64128000 50100 1280
其中第2个数字为最大信号量
- 节点的连接数是否符合预期,max_connections是否设置过大,可适当调小调小max_connections。需要在控制台页面上修改参数,重启节点生效。
- 调大可用信号量
调整方法:
修改配置文件
#vi /etc/sysctl.conf
修改kernel.sem值,主要调大其中第2个数字。
配置参数生效
#sysctl -p