zoukankan      html  css  js  c++  java
  • nginx 报错 too many open files

    系统访问异常,登录到后台查看nginx日志,发现error.log中出现大量的(to many open files)的问题。
    遇到这种情况一般排查两个地方:
    1、linux 打开文件句柄数
    ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    scheduling priority (-e) 0
    file size (blocks, -f) unlimited
    pending signals (-i) 63455
    max locked memory (kbytes, -l) 64
    max memory size (kbytes, -m) unlimited
    open files (-n) 1024
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    real-time priority (-r) 0
    stack size (kbytes, -s) 8192
    cpu time (seconds, -t) unlimited
    max user processes (-u) 4096
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited
     
    其中open files 默认为1024,可以将该数字调大,两种方式:
    1,执行命令:
    ulimit -n 65535
    立即生效,重启后失效
    2、修改系统配置文件:
    vim /etc/security/limits.conf
    最文件最后添加
    * soft nofile 65535
    * hard nofile 65535
     
    2、修改nginx
    worker_rlimit_nofile 65535
    重新加载nginx(  nginx -s reload)
     
    lsof:
    list open files,列出打开的文件,包括打开的文件、建立的连接(TCP/UDP等)
    常用的参数为:
    1 lsof abc.txt 显示开启文件abc.txt的进程 2 lsof -c abc 显示出以字母 abc 开头进程现在打开的文件 3 lsof -p 1234 列出进程号为1234的进程所打开的文件 4 lsof -g gname/gid 显示归属gname或gid的进程情况 5 lsof -u uname/uid 显示归属uname或uid的进程情况 6 lsof +d /usr/local/ 显示目录下被进程开启的文件 7 lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长 8 lsof -d 4 显示使用fd为4的进程 9 lsof -i 用以显示符合条件的进程情况 10 lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
     
    ningx 调优:
    一 nigix配置文件:
    1、 worker_processes 8 一般为CPU个数。
    2、worker_cpu_affinity 为每个进程分配CPU
    3、worker_rlimit_nofile 65535。 这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
    4、use poll。使用epoll的I/O模型,是linux内核实现多路复用的一个实现
    5、worker_connections 65536,每个进程允许的最多连接数。
    6、keepalive_timeout 30;超时时间 秒
    其他调优参考:
     
     
     
    reference:

    我的博客地址:紫荣 || myruhui
  • 相关阅读:
    java TopK算法
    夫妻过河问题
    Java中数据存储分配
    STM32与ARM代码执行过程
    C中gets()函数与scanf()函数说明
    MRTG开源监控安装手册
    mysql笔记
    windows调用ubuntu下的sublimeText2环境搭建
    linux性能优化
    测试那些事儿—软测必备的Linux知识(一)
  • 原文地址:https://www.cnblogs.com/zyzl/p/15106682.html
Copyright © 2011-2022 走看看