问题描述: 

有时候业务比较繁忙时,就会出现如下问题

too many open files:顾名思义即打开过多文件数。不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

 1. 基本解决方法:

系统默认的ulimit对文件打开数量的限制是1024,修改/etc/security/limits.conf并加入以下配置,永久生效
* soft nofile 65535 
* hard nofile 65535
硬限制是实际的限制,而软限制,是warnning限制,超过这个数值只会做出warning
 
注意:

1)这个限制是针对单个程序的限制

2)这个限制不会改变之前已经运行了的程序的限制

 
 
2. 查找文件句柄问题的时候,还有一个很实用的程序lsof。可以很方便看到某个进程开了那些句柄,也可以看到某个文件/目录被什么进程占用了。

例如分析句柄数,查找原因,这是解决问题最根本的办法。那么如何分析那,就需要用到lsof这个命令了

   (1)统计各进程打开句柄数:lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr

(2)统计各用户打开句柄数:lsof -n|awk '{print $3}'|sort|uniq -c|sort -nr

(3)统计各命令打开句柄数:lsof -n|awk '{print $1}'|sort|uniq -c|sort -nr

 
 
3. 系统中还有一个/proc/sys/file-max的文件, 表示系统所有进程一共可以打开的文件数量
通常這個系統級硬限制是Linux系統在啟動時根據系統硬件資源狀況計算出來的最佳的最大同時打開文件數限制,如果沒有特殊需要,不應該修改此限制,除非想為用戶級打開文件數限制設置超過此限制的值。
修改方法如下
方法一: echo  6553560 > /proc/sys/fs/file-max
方法二:/etc/sysctl.conf, 加入fs.file-max = 6553560,执行如下命令生效:sysctl -p
 
另外还有一个常用命令,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量
 
 
 
 
 
可以执行自动脚本如下
sed -i -e '44 i * soft nofile 65535' -e '44 i * hard nofile 65535' /etc/security/limits.conf
echo  6553560 > /proc/sys/fs/file-max
 
 
 
 
参考:
https://www.cnblogs.com/feng0815/p/8620564.html
 
 
 

linux中文件句柄数问题的更多相关文章

  1. 修改linux最大文件句柄数

    大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下 ...

  2. centos之Too many open files问题-修改linux最大文件句柄数

    linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [ ...

  3. Linux 下文件句柄数的查询学习

    1. 查看 所有进程的 打开的句柄数 lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more 效果为: 2. 查看某一个进程内的 文件信息 lsof ...

  4. Linux文件句柄数调整

    首先介绍下Linux系统中"一切都是文件". 1. Linux系统文件句柄数概念 文件句柄(Windows) 文件描述符(Unix/Linux):file discriptor,f ...

  5. Linux查看修改文件句柄数

    SuSE 11SP3 默认句柄数是1024 1.查看linux的文件句柄数 ulimit -a 2.修改文件句柄数 ①ulimit -n 65535②修改linux系统参数.vi /etc/secur ...

  6. linux修改句柄数

    linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [ ...

  7. linux中如何修改最大文件句柄数

    1.使用ulimit -a可以查看,其中的open files后面的数就是最大文件句柄数 2.临时方法:使用ulimit -n size修改最大文件句柄数(这种方法只针对当前进程有效) 3.永久方法: ...

  8. Linux下查看进程打开的文件句柄数和如何修改

    修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面).系统默认值1024. 对于一般的应用来说(象Apache.系统进 ...

  9. Linux下查看进程打开的文件句柄数

    ---查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n ----查看当前进程打开了多少句柄数 # lsof -n|awk '{print $2}'|sort|uniq -c|s ...

随机推荐

  1. Linux下MariaDB 安装及root密码设置(修改)

    根据官方说明在/etc/yum.repo.d/下添加repo: # MariaDB 10.2 Fedora repository list - created 2017-11-25 05:55 UTC ...

  2. So you've been rejected, now what? On appeals in peer-reviewed publications(From Wiley Exchanges)

    Getting rejected stinks. Wouldn’t it be great if we could appeal people’s decisions in life? Imagine ...

  3. 01b-1: 性能测度

  4. push和pop指令的使用

  5. Unknown type name 'NSString'

    今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情况下出现“Unkn ...

  6. Differential expression analysis for paired RNA-seq data 成对RNA-seq数据的差异表达分析

    Differential expression analysis for paired RNA-seq data 抽象背景:RNA-Seq技术通过产生序列读数并在不同生物条件下计数其频率来测量转录本丰 ...

  7. openssl详解

    openssl详解 摘自:https://blog.csdn.net/liguangxianbin/article/details/79665100 目录 目录 第一章 前言 第二章 证书 第三章 加 ...

  8. background image

    http://www.ajaxblender.com/bgstretcher-2-jquery-stretch-background-plugin-updated.html http://blog.d ...

  9. java如何集成支付宝移动快捷支付功能

    项目需要,需要在客户端集成支付宝接口.第一次集成,过程还是挺简单的,不过由于支付宝官方文档写的不够清晰,也是走了一些弯路,下面把过程写出来分享给大家.就研究了一下:因为使用支付宝接口,就需要到支付宝官 ...

  10. Redis Quick Start [熟练版]

    一.下载解压 wget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gzcd redis-stable ...