61

问答题 61 /290

请问如何修改文件最大句柄数?

参考答案

参考回答:

linux默认最大文件句柄数是1024个,在linux服务器文件并发量比较大的情况下,系统会报"too many open files"的错误。故在linux服务器高并发调优时,往往需要预先调优Linux参数,修改Linux最大文件句柄数。

有两种方法:

1. ulimit -n <可以同时打开的文件数>,将当前进程的最大句柄数修改为指定的参数(注:该方法只针对当前进程有效,重新打开一个shell或者重新开启一个进程,参数还是之前的值)

首先用ulimit -a查询Linux相关的参数,如下所示:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 94739
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 94739
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

其中,open files就是最大文件句柄数,默认是1024个。

修改Linux最大文件句柄数:  ulimit -n 2048, 将最大句柄数修改为 2048个。


2. 对所有进程都有效的方法,修改Linux系统参数

vi /etc/security/limits.conf 添加

*  soft  nofile  65536

*  hard  nofile  65536

将最大句柄数改为65536

修改以后保存,注销当前用户,重新登录,修改后的参数就生效了