在大型系统的使用中,我们会遇到这样的错误,由于系统报错table full error而引起了oracle数据库宕机。这种错误的引起是由于nfile值太小的缘故。
看看hpdoc的解释:nfile defines the maximum number of files that can be open simultaneously, system-wide, at any given time.
乍看似乎是我们看得见的文件打开数,其实不是,看得见的是nofile参数来管理的。
It is the number of slots in the file descriptor table. Be generous with this number because the required memory is minimal, and not having enough slots restricts system processing capacity.
nfile缺省值的计算公式如下:((16*(Nproc+16+MaxUsers)/10)+32+2*(Npty+Nstrpty)
那么这个值应该设置成多大呢?
优先考虑根据sar -v的结果来看,适当增加。观察一周左右,用lsof看它实际占用了多少。