要知道,在linux的世界里,一切皆文件.因此要实现大的并发量的第一步,修改linux系统的文件标识符限制数,也就是文件打开数量的限制
内核级的总限制 fs.file-max
man proc 里有这么一段话
查看限制数
12chris@ubuntu:~/myspace/myblog$ sysctl fs.file-maxfs.file-max = 3000000修改限制数
123chris@ubuntu:~/myspace/myblog$ sudo sysctl -w fs.file-max=3000000[sudo] password for chris:fs.file-max = 3000000
需要永久生效则1echo "fs.file-max=3000000" >>/etc/sysctl.conf
- 查看使用情况12chris@ubuntu:~$ sysctl fs.file-nrfs.file-nr = 6816 0 3000000
其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。
用户级进程级的限制
查看资源硬限制数
|
|
查看资源软限制数
|
|
通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit不能大于hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默认查看的是soft limit,但是 ulimit -n 204800 则会同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit
若要使修改永久有效,则需要在/etc/security/limits.conf中进行设置,可添加如下两行。123456@work hard nofile 6000000@work soft nofile 4000000@work soft core 4000000@work hard core 4000000@work hard nproc 6000000@work soft nproc 4000000
以上设置需要注销之后重新登录才能生效:
设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。可以修改nr_open的值: echo 2000000 > /proc/sys/fs/nr_open