操作系统有限制用户能打开的最大文件数,如果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信息发回进行排查。