Centos7 出现"Too many open files"等文件打开太多等错误解决方案

本文围绕Centos7系统展开,介绍了系统级(max-file)和进程级(ulimit)能够打开的文件句柄数量。默认情况下,系统级为794168,进程级为1024。若不设置,会出现文件描述符耗尽问题。文中还给出了永久生效的配置修改方法,以及遇到问题时的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ulimit -a 查看用户进程级的能够打开文件句柄的数量,Centos7默认是1024。

max-file 表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的。
ulimit -n 控制进程级别能够打开的文件句柄的数量。提供对shell及其启动的进程的可用文件句柄的控制,这是进程级别的。

 

对于服务器来说,file-max和ulimit都需要设置,否则会出现文件描述符耗尽的问题。

一般如果遇到文件句柄达到上限时,会碰到"Too many open files"或者Socket/File: Can’t open so many files等错误。

为了让服务器重启之后,配置仍然有效,需要用永久生效的配置方法进行修改。

1、max-file:

1)查看系统级别的能够打开的文件句柄的数量,Centos7默认是794168
# cat /proc/sys/fs/file-max

794168

2)系统级打开最大文件句柄的数量永久生效的修改方法,修改文件,文件末尾加入配置内容:
# vim /etc/sysctl.conf

fs.file-max = 2000000

3)然后执行命令,使修改配置立即生效:

# sysctl -p

 

2、ulimit:

2.1、这里设置的是当前shell的当前用户的打开的最大限制,如果当前用户打开多个shell,则每个shell都能打开该最大值

# ulimit -n

1024

2.2、进程级打开文件句柄数量永久生效的修改方法,修改文件,文件末尾加入配置内容:

1)这里限制一个用户的所有shell能打开的最大数:

# vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

修改以后,需要重新登录才能生效。

2)如果需要设置当前用户session立即生效,还需要执行:

# ulimit -n 65535 

对于服务器,一般修改进程级的最大打开文件句柄数即可(系统默认1024,有点小)。一般不需要调整系统级的最大数。

如果出现了达到系统级别最大限制时,也需要同步调整系统级的最大数的。

 

参考链接:https://blog.youkuaiyun.com/sunny05296/article/details/54952009

当在 CentOS 7 中的 Nginx 遇到 'too many open files' 错误,这通常是因为系统限制了文件描述符的数量,而 Nginx 和 PHP 进程都可能消耗大量的文件描述符。以下是几个步骤来解决这个问题: 1. **检查并增加 ulimit**: 打开终端并运行 `ulimit -a` 查看当前的文件描述符限制。如果发现限制较低,可以编辑 `/etc/security/limits.conf` 或者直接在 shell 启动会话时临时提升它: ``` sudo nano /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 ``` 上述命令将软限制(soft limit)和硬限制(hard limit)都设置为 65535,这个数值可以根据服务器资源情况适当调整。 2. **永久修改 ulimit**: 如果你想永久修改,需要编辑 `/etc/profile` 或者 `/etc/bashrc` 文件,并添加上述 `ulimit` 设置,然后注销并重新登录使其生效。 3. **检查 php-fpm**: 检查 PHP-FPM 的配置文件 `/etc/php/fpm/pool.d/www.conf` 或者 `/etc/php-fpm.d/nginx.conf`,确认 `request_terminate_timeout` 或者相关的超时设置不会导致大量打开的连接未关闭。 4. **优化 Nginx 配置**: 在 Nginx 配置中,可以考虑设置 `client_max_body_size` 来限制单个请求的上传大小,避免因大文件上传造成过多连接。 5. **监控并定期重启服务**: 使用工具如 `lsof`, `netstat` 或者第三方监控软件(如 `sysdig`、`New Relic`)持续监控资源使用情况,找出占用过多文件描述符的服务,然后定期重启它们以释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值