zoukankan      html  css  js  c++  java
  • java error: Too Many files

    参考文章:

    https://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/

    考虑一个实际问题,某服务器程序报Too many files opened错误。

    这个问题的出现原因是system对程序打开files数量的限制问题。 
    用 ulimit -a 可以查看. ulimit 指令,对资源限制和系统性能优化提供了一条便捷的途径。从用户的 shell 启动脚本,应用程序启动脚本,以及直接在控制台,都可以通过该指令限制系统资源的使用,包括所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存,等等方面。本文中的示例非常直观的说明了 ulimit 的使用及其产生的效果,显而易见,ulimit 对我们在 Linux 平台的应用和开发工作是非常实用的。

    [root@5 ~]# 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) 4096 
    max locked memory       (kbytes, -l) 32 
    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) 4096 
    virtual memory          (kbytes, -v) unlimited 
    file locks                      (-x) unlimited 

    可以看出,对open files的限制数是1024,我们可以通过修改这个值来增加可以打开的文件数。 

    ******************************************************************

    临时修改:

    将其改为2048,用 ulimit -n 2048.  在这种做法中,ulimit 限制的是当前 shell 进程以及其派生的子进程。举例来说,如果用户同时运行了两个 shell 终端进程,只在其中一个环境中执行了 ulimit – s 100,则该 shell 进程里创建文件的大小收到相应的限制,而同时另一个 shell 终端包括其上运行的子程序都不会受其影响:
    当你把open files的值增大到一定程度,你的Too many open files就不会再出现了。

    ******************************************************************

    若要 长久 改变这两个参数值,就要修改/ect/security/limits.conf,文件不仅能限制指定用户的资源使用,还能限制指定组的资源使用。该文件的每一行都是对限定的一个描述,格式如下:

    <domain> <type> <item> <value>
    domain 表示用户或者组的名字,还可以使用 * 作为通配符。Type 可以有两个值,soft 和 hard。Item 则表示需要限定的资源,可以有很多候选值,如 stack,cpu,nofile 等等,分别表示最大的堆栈大小,占用的 cpu 时间,以及打开的文件数。通过添加对应的一行描述,则可以产生相应的限制

    在文件中加上两行: 
    * - nofile 102400 
    * - nproc 102400

    ******************************************************************

  • 相关阅读:
    hashlib对密码进行加密
    django中model的choices字段
    django在表发生变化后需执行命令
    djangopost请求报错:Forbidden (CSRF token missing or incorrect.)
    阻止浏览器自动填入账号和密码
    django表的models的参数及含义
    django设置静态文件
    Django的admin管理工具设置中文
    径向渐变
    文档对象的获取
  • 原文地址:https://www.cnblogs.com/vigarbuaa/p/2747893.html
Copyright © 2011-2022 走看看