某linux服务器的日志每隔几天就会报错。内容如下:

[2012-02-22 09:50:00,119] ERROR ipnet.dc.pmprobe.SnmpScalarQueryJoe.execute()(146) - Too many open files       java.net.SocketException: Too many open files
向同事咨询了一下,一般报Too many open files的错,表示文件句柄数超出最大。对linux系统来说,默认的最大值为1024,在系统并发比较大的时候,这个很容易超过该值。文件句柄数大小可以通过命令ulimit -a查看。

为避免因程序任务过多导致文件句柄数不够的问题,在linux系统下部署程序的时候可以调大用户文件句柄数。用root用户修改/etc/security/limits.conf 配置,在文件末尾添加如下内容:
      user           soft    nofile  2048
      user           hard    nofile  65536
其中user为报错程序部署目录的用户名,根据部署环境配置。注意"nofile"项有两个可能的限制措施。就是<type>项下的hard和soft。硬限制表明soft限制中所能设定的最大值。soft限制指的是当前系统生效的设置值。hard限制值可以被普通用户降低。但是不能增加。soft限制不能设置的比hard限制更高。只有root用户才能够增加hard限制值。

修改完成后切换到user用户下再执行ulimit -a查看文件句柄数是否修改成功。

改完后,验证,发现用户的文件句柄数已变成2048.应该可以应对大并发数啦。

这里只是修改最大句柄数,另外一个问题,如何知道当前进程打开了多少个文件句柄呢?可以通过下面一段小脚本可以帮你查看:

[root@VM192168200201 etc]# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
    738 26249
    164 16540
    154 16538
    150 16581
    135 16640
    135 16638
    134 16990
    131 16615
    121 16095
    119 16617
    118 16510
    116 16600
    115 16548
    110 16636
    104 16545
     94 3684
     90 20160

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

通过这个命令可以按照从大到小的顺序查看各进程共打开了多少文件句柄数。第一列为数量,第二列为进程号。然后再用pwdx 进程号   查看最大的进程路径,ps -ef|grep 进程号   查看程序名称。

剩下的问题就自己解决啦。

转载于:https://blog.51cto.com/xueli/786758

linux日志显示too many open files解决相关推荐

  1. Kali Linux中显示“仓库没有数字签名”的解决方法

    Kali Linux中显示"仓库没有数字签名"的解决方法 在Kali Linux中使用"apt-get"指令是,会显示"仓库没有数字签名", ...

  2. linux signal历史log,nginx错误signal process started错误error.log日志显示signal process started错误解决方法...

    nginx日志报的错:ngnix:[notice] 30499#0: signal process started 前台页面显示:500 Internal Server Error,在nginx日志报 ...

  3. linux网络显示不出来ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33

    今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...

  4. Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】

    Linux部署Tomcat踩的坑以及解决方案[8080无法访问.日志显示XX端口被占用.修改默认端口.无法提供安全连接] 8080无法访问 解压开压缩包后,执行bin目录下的 startup.sh 后 ...

  5. vnc远程登录linux黑屏,linux VNC安装好后登录黑屏 鼠标显示黑色大叉的解决方法

    linux VNC安装好以后用VNC登录黑屏,鼠标显示黑色大叉的解决方法 这里的方法选择执行就可以了,我这里是执行了第二句,第三句就可以了,原因是系统在安装的时候没有安装桌面元素包 linux VNC ...

  6. linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

    不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...

  7. ITEXT5.5.8转html为pdf文档解决linux不显示中文问题

    ITEXT5.5.8转html为pdf文档解决linux不显示中文问题 参考文章: (1)ITEXT5.5.8转html为pdf文档解决linux不显示中文问题 (2)https://www.cnbl ...

  8. Linux安装RPM包、查看本机ip和端口、手动配置ip、中标麒麟无法显示ip地址的详细解决方法

    文章目录 安装rmp Linux安装RPM包.DEB包后,软件在哪 RPM包安装去向(例:包名=>redis) 查看本机ip 查看所有端口 手动配置ip 中标麒麟无法显示ip地址的详细解决方法 ...

  9. xshell文件传输乱码_XShell连接 Linux系统显示中文乱码解决

    XShell是一个强大的安全终端模拟软件,它支持SSH1, SSH2及 Microsoft Windows平台的Telnet NetSarang Xshell 4 Build 0120协议.使用Xsh ...

最新文章

  1. java设计模式1--工厂方法模式(Factory Method)
  2. Mybatis中的一级缓存
  3. system流怎么判断为空_并行流ParallelStream中隐藏的陷阱
  4. Qt工作笔记-自定义模型【继承QAbstractTableModel】
  5. Python3之数据类型
  6. 利用MFC Picture Control控件 加载bmp,png
  7. java之方法覆盖的坑
  8. C#-WebForm-JS知识:基础部分、BOM部分、DOM部分、JS事件
  9. MySQL的外键约束:Cascade/Restrict/No action/SET NULL :级联操作
  10. KITTI数据集介绍
  11. 阿里矢量库图标在线链接的使用方法,引入,改变大小与颜色
  12. 水晶报表加载本地图片 【BY阿泰】
  13. window7电脑如何调亮度
  14. Linux通过df命令查看显示磁盘空间满,但实际未占用问题
  15. 【自适应盲均衡12】判决引导(DD)+判决反馈(DFE)+双模式切换的盲均衡算法在双绞线基带通信中的应用MATLAB仿真(采用三电平PAM信号模型)
  16. Java绝对好文,转载的!(转载)
  17. 在sublime中如何将html代码格式化!
  18. 手游低延迟高性价比蓝牙耳机,300元学生党最爱五款蓝牙耳机
  19. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)
  20. 程序员,不要让自己做兔子(updated) 网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事 我就是想打你了,还需要什么理由吗?谁让你是兔子 项目经理是这样当的...

热门文章

  1. gis快速接地开关_一种基于扫描电镜和能谱仪的GIS放电异物来源分析方法
  2. 学习深度网络需要直观的感知
  3. 2021年人工神经网络第四次作业-第五题:危险品识别
  4. 2021信号与系统一流课程申请-说课视频规划
  5. 基于STC8H1K28的BH60的角度读写模块
  6. Mac的访达中,如何只搜索当前文件夹的内容?
  7. 计算机考试八页PPT,第八章节授课ppt-江苏省计算机等级考试.ppt
  8. python3.5升级_python升级 (2.6升级到3.5)
  9. 2021高考成绩各科各题得分查询,2021年新疆高考分数一分一段位次表,新疆高考个人成绩排名查询方法...
  10. 关于对锐捷光交换机的使用