zoukankan      html  css  js  c++  java
  • nginx报错socket() failed (24: Too many open files)【转】

    nginx 错误日志:

    1
    2
    2016/02/28 21:07:36 [alert] 11569#0: *41512 socket() failed (24: Too many open files) while connecting to upstream, client: 192.168.1.110, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "192.168.1.218"
    2016/02/28 21:07:36 [alert] 11569#0: *41512 socket() failed (24: Too many open files) while connecting to upstream, client: 192.168.1.110, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "192.168.1.218"
    1
    解决办法:

    一、Linux打开文件最大数设置

    查看打开文件最大数

    ulimit -a

    设置一

    ulimit -HSn 102400 #只是当前shell有效

    设置二

    (1)ulimit -HSn 102400

    (2)将ulimit -HSn 102400写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile。

    (3)令修改open files的数值永久生效,则必须修改配置文件:vi /etc/security/limits.conf. 在这个文件后加上:

    * soft nofile 102400

    * hard nofile 102400

    这种方法需要重启机器才能生效。

    另一个,查看下nginx的配置文件。

    查看 worker_rlimit_nofile 配置项

    worker_rlimit_nofile 655350;

    二、nginx打开文件最大数设置

    nginx worker_rlimit_nofile Option (在nginx级别上提高打开的文件句柄限制)

    nginx也有同样的限制,可以通过worker_rlimit_nofile来增加此限制数量。 来设置被nginx进程最大文件打开的数量,编辑nginx.conf文件,键入:

    vi /usr/local/nginx/conf/nginx.conf (视你的配置文件的位置而定)

    追加或者编辑:

    worker_rlimit_nofile   30000;

    保存并关闭文件,重新加载nginx配置,并重新执行开始查看软硬限制的命令:

    su - nginx

    ulimit -Hn

    ulimit -Sn

    输入示例:

    30000

    10000

    其实在国内的网站是上搜到的内容大都讲的差不多了,原先我也如此,但一直没有解决,最后发现最关键的参数没设置,故一直不能超过1024个active conntions. 通过设置此参数即可解决:

    worker_rlimit_nofile   30000;

    三、Linux操作系统中打开文件数量的查看方法

    ulimit -n 4096

    也就是限制用户的最大文件打开数为4096个

    在网上查了关于怎么查看文件打开数的文章大致有两种说法

    /proc/sys/fs/file-nr

    该文件与 file-max 相关,它有三个值:

    已分配文件句柄的数目

    已使用文件句柄的数目

    文件句柄的最大数目

    该文件是只读的,仅用于显示信息。

    查看所有进程的文件打开数

    lsof |wc -l

    查看某个进程打开的文件数

    lsof -p pid |wc -l

    英文原文:
    Syntax: worker_rlimit_nofile number;
    Default:    —
    Context:    main
    Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process.
    
    中文翻译:
    为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。
    
    例如:
    worker_rlimit_nofile 204800;
    理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相除。

    转自

    nginx socket() failed (24: Too many open files) - 王恒志 - 博客园
    https://www.cnblogs.com/xzlive/p/14973823.html

    Nginx: 24: Too Many Open Files 错误和解决方案 - 房客 - 博客园
    https://www.cnblogs.com/sxlfybb/archive/2011/09/15/2177983.html

    Linux操作系统中打开文件数量的查看方法 - 心灵捕手 - 博客园 https://www.cnblogs.com/Dennis-mi/articles/6084581.html

    (24条消息) nginx学习随笔--worker_rlimit_nofile_zhxuewu的专栏-CSDN博客_worker_rlimit_nofile

    https://blog.csdn.net/zhxuewu/article/details/77932441

    • 英文原文:
    Syntax: worker_rlimit_nofile number;
    Default: 
    Context:    main
    • 1
    • 2
    • 3

    Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process.

    • 中文翻译:

      为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。
      
      • 1

    例如:

    worker_rlimit_nofile 204800;
    • 1

    理论上这个值是最多打开文件数(ulimit -n)与nginx工作进程相除。

  • 相关阅读:
    python刷新七牛云CDN缓存
    python 操作redis
    redis 设置密码
    redis 允许其他机器连接设置方法
    redis持久化
    redis操作
    redis简介及与memcached比较
    dataframe 处理某列的小数位数并加特殊符号
    django 生成和下载CSV文件
    django 重定向
  • 原文地址:https://www.cnblogs.com/paul8339/p/15638575.html
Copyright © 2011-2022 走看看