Nginx Too many open files
2019/07/25 08:31:31 [crit] 15929#15929: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
2019/07/25 08:31:31 [crit] 15930#15930: accept4() failed (24: Too many open files)
出现这个错误可能是由于系统的ulimit限制和nginx自身的配置有关系,先来了解下概念。
什么是ulimit?
ulimit命令用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容可以帮助你理解:
假设有这样一种情况,当一台 Linux 主机上同时登陆了 个人,在系统资源无限制的情况下,这 个用户同时打开了 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。
ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、
常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
简单来说,ulimit描述符可以对用户打开的文件数量进行限制(不止限制打开文件数量),让单个用户不至于打开较多的文件,导致系统奔溃或者资源不足的情况。
注意:修改 nginx 的 max open files 有个前提,就是你已经修改好了系统的 max open files.
修改系统中的 /etc/security/limits.conf文件中
sudo vim /etc/security/limits.conf #在最后添加如下两行
* soft nofile 65535
* hard nofile 65535
这是网上搜了很多教程,但是到此还是无法解决问题 上面修改了系统的 max open files,并不代表nginx的
先查看 nginx 的 ulimits:
grep 'open files' /proc/$( cat /var/run/nginx.pid )/limits

发现nginx 的 max open files 并没有变化 修改 nginx.service
sudo vim /lib/systemd/system/nginx.service # (仅适用于 ubuntu)
添加如下:
[Service]
LimitNOFILE=65535
重启服务:
sudo systemctl daemon-reload
修改 nginx.conf,
添加:以下两点
worker_rlimit_nofile 65535; # (has to be smaller or equal to LimitNOFILE set above)
events {
worker_connections 65535;
}
重启 nginx:
sudo systemctl restart nginx 然后再去查看nginx的 max open files,看看是不是我们设置的65535
grep 'open files' /proc/$( cat /var/run/nginx.pid )/limits
到此就修改nginx的max open files结束。 但是如果你已经把nginx 的max open files值改的很大了,但是还是会出现Too many open files 的错误,那说明你后端服务器处理请求的速度太慢了,或是 并发太高了。
Nginx Too many open files的更多相关文章
- Linux下安装nginx
一直会使用nginx,也学习了好多nginx知识.也在本地安装过nginx,这次是第一次在正式的环境安装nginx,把这些记录下来总结经验. 一.安装环境 操作系统:CentOS release 6. ...
- Mac Brew Install Nginx Summary
==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_capitan.bot################# ...
- centos 7.0 安装nginx 1.9.10
可以参考以前安装成功的案例 centos 7.0 nginx 1.7.9成功安装过程 官网下载 http://nginx.org/en/download.html nginx下载位置 /usr/loc ...
- nginx+Memcached 缓存设计
单页面缓存方案 单静态页缓存 解决问题场景 常见的缓存设计利用System.Web.Cache 保存在内存内,效率高,可以减轻数据库访问的压力.但是Web除了获取数据之外,还有呈现页面渲染,生成HTM ...
- CentOS6编译安装PHP7+Nginx
本文属于动手搭建PHP开发环境的一部分,更多点击链接查看. 本文以centos6为例. 安装PHP 下载 http://cn2.php.net/distributions/php-5.6.22.tar ...
- nginx 访问目录403
centos7.2默认安装好nginx后,会在/usr/share/nginx/html下作为主目录 但是如果想访问下面的目录会发现没有权限,返回403错误 这时候要注意在/etc/nginx/ngi ...
- Nginx编译配置杂记
1.http://nginx.org/download/nginx-1.6.3.tar.gz 2. [root@track nginx-1.6.3]#./configure --prefix=/usr ...
- centos 7.0 nginx 1.7.9成功安装过程
centos 7.0根目录 的目录构成 [root@localhost /]# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib me ...
- keepalived+nginx高可用负载均衡环境搭建
上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master) 192. ...
随机推荐
- python @abstractmethod
1.写在前面 由于python 没有抽象类.接口的概念,所以要实现这种功能得abc.py 这个类库 2.@abstractmethod特点 @abstractmethod:抽象方法,含abstract ...
- springBoot注解搜集
一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...
- 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_04-新增课程-数据字典
课程的等级是个单选按钮 2.3 数据字典 2.3.1介绍 在新增课程界面需要选择课程等级.课程状态等,这些信息统一采用数据字典管理的方式. 本项目对一些业务的分类配置信息,比如:课程等级.课程状态.用 ...
- Kubernetes简介二
Kubernetes是什么?Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能.通过Kubernetes你可以: 快速部署应用 快速扩展应用 ...
- LeetCode_119. Pascal's Triangle II
119. Pascal's Triangle II Easy Given a non-negative index k where k ≤ 33, return the kth index row o ...
- MediaElement 不能显示的问题
1.记得在窗体的 Load 事件里面调用 Player1.Play();方法,就可以在窗体加载后就直接播放视频 2.WPF MediaElement其实和Windows系统自带的播放器是一样的,因此W ...
- LNMP V1.4正式版本安装及新增Let's Encrypt一键安装和其他功能
军哥的LNMP一键安装包已经有一些年头了,着实给需要在Linux VPS.服务器中安装WEB环境的用户提供不小的帮助,而且每年儿童节都会有较大版本的更新和升级.老左在二月份的时候有体验过LNMP V1 ...
- Unity3D 原来Unity比较新的版本支持中文
注意: Unity 2018.2 以上版本才可以
- SPSS 2019年10月31日 20:20:53今日学习总结
◆描述性统计分析 概念:描述性统计分析方法是指应用分类.制表.图形及概括性数据指标(去均值,方差等)来概括数据分布特征的方法. 而推断性统计分析方法则是通过随机抽样,应用统计方法把从样本数据得到的结论 ...
- 书.Windows网络与通信程序设计
1.PDF&源码 保存到了 我的网盘fivez79513-->"PDF&源码" 目录中 “Windows网络与通信程序设计(第2版) 完整带书签PDF+源码. ...