zoukankan      html  css  js  c++  java
  • 系统句柄报too many files open

    对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如下面一段小脚本可以帮你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
       但是如果系统并发特别大,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。

    [root@localhost ~]# 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) 62694
    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) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 62694
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

      

    修改方法:

    在文件/etc/security/limits.conf中添加:

    * soft nofile 65536 
    * hard nofile 65536  
    #只需要添加上面两句
    #后系统使用这个
    # End of file
    * - nofile 102400
    * - nproc 102400
    

      

    解释:*代表domain,就是全局的意思,可以改成具体的用户名来限制某个用户。
    soft / hard:这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.
    nofile 代表max number of opened file,
    65536:代表最大打开句柄数
    另:如果只是添加硬限制,而没有添加软限制,是没有作用的,使用ulimit -a 查看还是没变。
    重启机器就ok了

  • 相关阅读:
    self 和 super 关键字
    NSString类
    函数和对象方法的区别
    求两个数是否互质及最大公约数
    TJU Problem 1644 Reverse Text
    TJU Problem 2520 Quicksum
    TJU Problem 2101 Bullseye
    TJU Problem 2548 Celebrity jeopardy
    poj 2586 Y2K Accounting Bug
    poj 2109 Power of Cryptography
  • 原文地址:https://www.cnblogs.com/Alexr/p/10325739.html
Copyright © 2011-2022 走看看