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. ...
随机推荐
- 使用requirejs+vue 打造 无需编译发布便捷修改调整的模块开发方案 (一)
前言 不知道大家有没有这种感觉,现在流行的很多前端技术,基本上都基于webpack编译,当然不是说这种方案不好,在标准的开发流程运行中,这种方式其实也挺不错,管理方便,代码统一. 痛点:项目不是单独针 ...
- 留个纪念,过了这么多年,又干回Android了!
这个博客中的好多Android知识已经老得不像样子了,没想到,还有干回来的一天.怎么说呢,只要坚持一下,总会有机会能做自己爱做的事情的. 加油! ---- 于武汉出差的第5天
- Java同步数据结构之ConcurrentHashMap
前言 这是Java并发包最后一个集合框架的数据结构,其复杂程度也较以往任何数据结构复杂的多,顾名思义ConcurrentHashMap是线程安全版本的HashMap,总所周知HashMap是非线程安全 ...
- Leetcode: Longest Palindromic Substring && Summary: Palindrome
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- Qt编写自定义控件56-波浪曲线
一.前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当时写这个效果的时候,参 ...
- 【419】C语言语句
判断语句 C 语言提供了以下类型的判断语句.点击链接查看每个语句的细节. 语句 描述 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成. if...else 语句 一个 if 语句 ...
- 123457123456#0#-----com.twoapp.mathGame13--前拼后广--13种数学方法jiemei
com.twoapp.mathGame13--前拼后广--13种数学方法jiemei
- iOS compile sources问题
以前xcode compile sources 这里是自动生成的,升级到新版本之后,我删掉这里的列表,就没法生成了.导致项目无法运行. 解决方法就是:自己手动添加.h文件
- 【Aizu - 0189】Convenient Location (最短路 Floyd算法)
Convenient Location 直接翻译了 Descriptions 明年毕业的A为就业而搬家.就职的公司在若干城市都有办公室,不同天出勤的办公室也不同.所以A在考虑住在哪去各个办公室的时长最 ...
- python 优雅的解析 jsonp
一段 jsonp 格式数据 mtopjsonpweexcb1({"api":"mtop.taobao.idle.recycle.nextspunav.get", ...