南大通用GBase 8a查询日志报错 Can't open file (errno:24) Too many open file

GBase 8a由于操作系统文件句柄不足导致too many open file报错图

操作系统有限制用户能打开的最大文件数,如果GBase 8a数据库用户打开的文件数量超过了,则会触发操作系统报错24。包括Can't open file (errno:24)和Error in accept: Too many open file。

报错样例

下图是一个报错样例图。

原因

进程打开的文件数量超过了操作系统给用户设定的允许的最大值。

排查

查看系统设定值

在操作系统数据库dba用户下,一般是gbase用户,执行。

ulimit -a
或者
ulimit -n

如下是一个输出,设置值是10万个。而GBase 8a建议值是655360个。

查看当前打开的句柄

通过 /proc/进程ID/fd查看,比如查看gbased进程打开的文件句柄

ls -l /proc/`pidof gbased`/fd

如下是一个现场输出,已经超过了设定值

解决方案

修改系统的最大文件数配置,建议还是655360个。修改方案请联系安全加固人员或者搜素引擎搜索。

一般请排查如下几个位置

/etc/security/limits.conf
/etc/security/limits.d/XXXX.conf
/etc/profile
/home/gbase/.bash_profile
/home/gbase/.bashrc

如果文件系统报错,有可能导致数据库占用大量文件句柄,建议先维修文件系统。

如果文件系统没问题,而数据库使用了655360个句柄,那就很有可能是数据库BUG了。将已经使用的fd信息发回进行排查。