CentOS文件描述符
在生产上部署的Ocelot,,ESTABLISHED到达3000后会不间断出现内部服务器错误及too many file等类似字样错误,经排查,因最近进行了服务器迁移,导致部文件描述符部分没有进行配置,进行配置后,故障恢复。整理如下:
一、系统最大文件描述符
查看系统最大文件描述符
cat /proc/sys/fs/file-max
临时设置最大文件描述符
# echo 1000000 > /proc/sys/fs/file-max
永久性设置最大文件描述符
vim /etc/sysctl.conf
fs.file-max = 1000000
二、进程最大文件描述符
查看进程最大文件描述符
ulimit -n
查看进程最大文件描述符soft limit和hard limit
ulimit -Sn
ulimit -Hn
临时设置最大文件描述符soft limit和hard limit
ulimit -n 63353
永久设置最大文件描述符soft limit和hard limit
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
#在C7系统,进程改用了systemd代替之前SysV进行服务管理,原先的/etc/security/limits.conf文件配置的作用域缩小,只适用于通过PAM认证登录用户的资源显示,对systemd的service资源限制不生效的。
#在CentOS7+里面,要进行全局的配置进程打开文件数量,需要修改/etc/systemd/system.conf 和 /etc/systemd/user.conf 这两个,当然,如果只是进程修改system.conf即可,里面有两个默认值调整一下:
vim /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
三、查看当前系统描述符
查看当前系统描述符
cat /proc/sys/fs/file-nr
5664 0 186405
//其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。
查看进程ID号
pidof dotnet
总结
1、所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
2、单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
3、soft limit不能超过其hard limit
4、nofile的hard limit不能超过/proc/sys/fs/nr_open