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的更多相关文章

  1. Linux下安装nginx

    一直会使用nginx,也学习了好多nginx知识.也在本地安装过nginx,这次是第一次在正式的环境安装nginx,把这些记录下来总结经验. 一.安装环境 操作系统:CentOS release 6. ...

  2. Mac Brew Install Nginx Summary

    ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_capitan.bot################# ...

  3. centos 7.0 安装nginx 1.9.10

    可以参考以前安装成功的案例 centos 7.0 nginx 1.7.9成功安装过程 官网下载 http://nginx.org/en/download.html nginx下载位置 /usr/loc ...

  4. nginx+Memcached 缓存设计

    单页面缓存方案 单静态页缓存 解决问题场景 常见的缓存设计利用System.Web.Cache 保存在内存内,效率高,可以减轻数据库访问的压力.但是Web除了获取数据之外,还有呈现页面渲染,生成HTM ...

  5. CentOS6编译安装PHP7+Nginx

    本文属于动手搭建PHP开发环境的一部分,更多点击链接查看. 本文以centos6为例. 安装PHP 下载 http://cn2.php.net/distributions/php-5.6.22.tar ...

  6. nginx 访问目录403

    centos7.2默认安装好nginx后,会在/usr/share/nginx/html下作为主目录 但是如果想访问下面的目录会发现没有权限,返回403错误 这时候要注意在/etc/nginx/ngi ...

  7. Nginx编译配置杂记

    1.http://nginx.org/download/nginx-1.6.3.tar.gz 2. [root@track nginx-1.6.3]#./configure --prefix=/usr ...

  8. 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 ...

  9. keepalived+nginx高可用负载均衡环境搭建

    上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master)  192. ...

随机推荐

  1. Carve Visual Studio2015编译

    下载Carve库  https://github.com/folded/carve 目录结构如下: 用Visual Studio2015打开,点击右键,生成即可 在bin目录下生成了   .lib文件 ...

  2. 23Flutter FloatingActionButton实现类似闲鱼App底部导航凸起按钮:

    /* 一.Flutter FloatingActionButton介绍 FloatingActionButton简称FAB,可以实现浮动按钮,也可以实现类型闲鱼app的底部凸起导航. child:子视 ...

  3. ES6深入浅出-1 新版变量声明:let 和 const-3.视频 相关面试题

    执行顺序问题 请问console.log输出的值是多少 输出的肯定是1 假如这里有一行未知的代码 会打印出几? 如果这段未知的代码是a=2.那么其实console输出的就是2 只关心代码,没有关心代码 ...

  4. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_03-Eureka注册中心-搭建Eureka高可用环境

    1.3.2.2 高可用环境搭建 Eureka Server 高可用环境需要部署两个Eureka server,它们互相向对方注册.如果在本机启动两个Eureka需要 注意两个Eureka Server ...

  5. javascript——URI的编解码方法

    有效的URI(统一资源标示符)是不能包含某些字符的,如空格,所以需要进行编码,编码方法有:encodeURI()和encodeURIComponent(), 对编的码进行解码方法有:decodeURI ...

  6. 如何区分进程和线程ps -eLf

    方式 使用ls /proc/pid/task/ 查看线程 使用ps -eLf命令/ps aux -L/ps aux -el 使用pstree 进程和线程 进程是资源分配的最小单位 线程是cpu时间片分 ...

  7. (三)Asp.net web api中的坑-【http post请求中的参数】

    接上篇, HttpPost 请求 1.post请求,单参数 前端 var url = 'api/EnterOrExit/GetData2';var para = {};para["Phone ...

  8. page工具类

    工具类 /** * @Title: PageUtil.java * @Package * @Description: TODO(用一句话描述该文件做什么) * @author licy * @date ...

  9. [转]NopCommerce中的多商店支持:权威指南

    [转]NopCommerce中的多商店支持:权威指南 多商店支持是最强大的nopCommerce功能之一.但究竟什么是多店支持?它是谁的?如何在nopCommerce中设置多个商店?在今天的帖子中,我 ...

  10. Android_7.1.1_r6源码下载

    作为一名Android工程师,阅读Android源代码也是一门基本功,前段时间由于公司开发需要,便下载编译了Android_7.1.1_r6的源代码.在Windows下貌似是无法编译源代码的,为了以后 ...