1. root用户登录,用cat /proc/sys/fs/file-max查看文件系统最大可打开文件数
a) 如果设置过小,如:
8192
修改文件/etc/sysctl.conf的变量到合适的值。 这样会在每次重启之后生效,编辑文件/etc/sysctl.conf,插入下行:
fs.file-max = 8192
其中,我的设置是65536(有人建议说应该设置成200000,当然,设置的越大系统就越慢了,选择你合适的最好)
b) 如果设置过大,下一步。
2. 查看每个用户允许打开的最大文件数 ,用如下命令:
ulimit –a
a) 发现系统默认的是open files (-n) 1024,问题就出现在这里,可能过下了,我测试我的应用程序超过这个值就报“too many open files”;
c) 在/etc/security/limits.conf文件中设置最大打开文件数,下面是一行提示:
#<domain> <type> <item> <value>
d) 添加如下这行:
* - nofile 2048
e) 这行设置了每个用户的默认打开文件数为2048。注意"nofile"项有两个可能的限制措施。就是<type>项下的hard和soft。要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用"-"字符设定<type>, 则hard和soft设定会同时被设定。硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。当增加文件限制描述,可以简单的把当前值双倍。 例子如下, 如果你要提高默认值1024, 最好提高到2048, 如果还要继续增加, 就需要设置成4096。
f) Too many open files