zoukankan      html  css  js  c++  java
  • Too many open files问题解决

    问题描述:java工程,启动tomcat后发现catalina.out启动日志 报错“Too many open files”

    原因:句柄数超出系统限制。

    句柄含义:不单是文件,也包括打开的通讯链接(比如socket),正在监听的端口等等

    解决:ulimit -a 可以查看当前系统设置的最大句柄数是多少,如下图 open files即是最大句柄数设置

    查看全部进程占用句柄数总和:lsof|awk '{print $2}'|wc -l

    查看某一个进程占用句柄数: ls -l /proc/pid(例如10124)/fd/ | wc -l

    查看系统中进程打开文件数的一个排序:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more

    如果总和超过最大句柄数设置,则设置最大句柄数即可,命令如下

    ulimit –n 65535  设置最大句柄数是65535

    可以再次输入ulimit -a 查看确认是否生效,如下图

    生效,解决! 

    ulimit –n 2000

    这个命令可以把默认的句柄数改为2000,但系统重启后会恢复默认值

    这个文件在系统中的默认值配置在/etc/security/limits.conf文件中,加入以下配置:

    * soft nofile 2000
    * hard nofile 2000
    或者

    * - nofile 2000
    其中hard的设置是实际的默认值,也就是上限,而soft的配置只是用来警告的,如果超过了soft的值,会有warn,而第三种用短横线– 的配置,则是hard和soft同时配置的方式。

    扩展:linux句柄如何理解

    在linux系统设计里面遵循一切都是文件的原则,即磁盘文件、目录、网络套接字、磁盘、管道等,所有这些都是文件,在我们进行打开的时候会返回一个fd,即是文件句柄。如果频繁的打开文件,或者打开网络套接字而忘记释放就会有句柄泄露的现象。在linux系统中对进程可以调用的文件句柄数进行了限制,在默认情况下每个进程可以调用的最大句柄数是1024个,如果超过了这个限制,进程将无法获取新的句柄,而从导致不能打开新的文件或者网络套接字,对于线上服务器即会出现服务被拒绝的情况。

     
  • 相关阅读:
    当用户登录,经常会有实时的下拉框,例如,输入邮箱,将会@qq.com,@163.com,@sohu.com
    《SAS编程和数据挖掘商业案例》学习笔记# 19
    CareerCup它1.8 串移包括问题
    ERDAS遥感图像配准、及其它一些基本处理
    ENVI裁剪
    【转】Points To Line
    【转】Python IDE for Eclipse
    [转] Download Images from Multiple Maps
    Matlab splinetx
    jquery 元素控制(附加元素/其他内容)引进和应用
  • 原文地址:https://www.cnblogs.com/wanghongsen/p/11757634.html
Copyright © 2011-2022 走看看