引之:

在一个工作中的实践项目中,项目是一个部署到linux下的中间件项目,当收到一个Client登录的时候,需要为这个Client打开四个文件,当进行 多用户的大压力测试的时候,程序就出问题了: too many opened files。 网上一查,发现有人也碰到过类似的socket/File: Can’t open so many files问题。 在此总结一下这个问题,希望对后来之人有点帮助。

解决之法:

1,ulimit -a 查看当前用户的文件句柄限制

open files (-n) 65535这个就是限制数量。(65535是我已经修改后的值了,没修改前是1024)

2,修改/etc/security/limits.conf 增加下面的代码:

Shell代码

你的用户名  soft nofile 65535

你的用户名 hard nofile 65535

我们添加了有soft, hard两种:硬限制是实际的限制,而软限制,是warnning限制,只会做出warning。修改时,改成一样就可以了。

3, 重启shell即可。(有些系统可能需要重启系统, red hat 的肯定不用的)

4, ulimit -a 查看设置是否成功。

附:具体修改方法

修改linux的最大文件句柄数限制的方法:

1)ulimit -n 65535

在当前session有效,用户退出或者系统重新后恢复默认值

2)修改profile文件:在profile文件中添加:ulimit -n 65535

只对当个用户有效

3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-当前session中运行ulimit -a命令无法显示)

* soft nofile 32768 #限制单个进程最大文件句柄数(到达此限制时系统报警)

* hard nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错)

4)修改文件:/etc/sysctl.conf。在文件中添加:

fs.file-max=655350 #限制整个系统最大文件句柄数

运行命令:/sbin/sysctl -p 使配置生效

原理分析:

Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,应用程序很容易就达到这个数量,所以也就有了这篇文章。ulimi是对单一程序的限制,而不是单个用户。

查看系统总限制命令:

Shell代码

cat /proc/sys/fs/file-max

查看整个系统目前使用的文件句柄数量命令:

Shell代码

cat /proc/sys/fs/file-nr

辅助命令:

查找文件句柄问题的时候,还有一个很实用的程序lsof,可以很方便看到某个进程开了哪些句柄:

Shell代码

lsof -p pid

某个进程开了几个句柄:

Shell代码

lsof -p pid |wc -l

也可以看到某个目录/文件被什么进程占用了,显示已打开该目录或文件的所有进程信息:

Shell代码

lsof path/filename

linux无效的文件句柄,Linux文件句柄限制分析相关推荐

  1. linux无效家目录,Linux 家目录下文件夹消失?

    /home/user/Documents文件夹突然消失了,最近的操作是vsftpd配置行为,但是并没有涉及该文件夹的操作.求助,个人很多资料保存在这个文件夹下. OS: Linux Mint 17.3 ...

  2. Linux系统调用详解(实现机制分析)--linux内核剖析(六)

    本文介绍了系统调用的一些实现细节.首先分析了系统调用的意义,它们与库函数和应用程序接口(API)有怎样的关系.然后,我们考察了Linux内核如何实现系统调用,以及执行系统调用的连锁反应:陷入内核,传递 ...

  3. Linux系统调用详解(实现机制分析)

    为什么需要系统调用   linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于内核态,而普通的函数调用由函数库或用户 ...

  4. linux内核剖析---Linux系统调用详解(实现机制分析)

    原文博客 http://blog.csdn.net/gatieme/article/details/50779184 本文介绍了系统调用的一些实现细节.首先分析了系统调用的意义,它们与库函数和应用程序 ...

  5. Linux下USB suspend/resume源码分析【转】

    转自:http://blog.csdn.net/aaronychen/article/details/3928479 Linux下USB suspend/resume源码分析 Author:aaron ...

  6. linux内核网络初始化,Linux内核--网络栈实现分析

    本文分析基于内核Linux Kernel 1.2.13 以后的系列博文将深入分析Linux内核的网络栈实现原理,这里看到曹桂平博士的分析后,也决定选择Linux内核1.2.13版本进行分析. 原因如下 ...

  7. linux培训描述,【linux培训班】关于linux系统记录和描述进程的分析

    从C语言源代码分析,神秘的Linux系统是如何记录和描述进程的?也许我们习惯用Windows系统,可程序员最爱的还是linux系统,毕竟这样的系统安全性比较高,可操作的难度也是有的,不适合小白来使用. ...

  8. oracle服务器的操作系统,Oracle Linux 操作系统及数据库的时区机制分析

    Oracle Linux 操作系统及数据库的时区机制分析 1. /etc/localtime 这个文件记录的是系统的时区,缺省的数据库由此获得时区信息 这个文件是二进制文件,修改该文件的方法是拷贝/u ...

  9. 基于Linux C的socketEthereal程序和Package分析 (一个)

     执行测试平台:CentOS 6.5发行版,内核版本号3.11 1. Linux抓包源程序 在OSI七层模型中.网卡工作在物理层和数据链路层的MAC子层. 进行网络通信时.源主机通过socket( ...

  10. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)

    Linux内核连接跟踪锁的优化分析(1) 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer ...

最新文章

  1. 【计算机网络】计算机网络 OSI 参考模型 ( 计算机网络分层结构 | OSI 七层参考模型 | 应用层 | 表示层 | 会话层 | 传输层 | 网络层 | 数据链路层 | 物理层 )
  2. 同一局域网内不同网段文件共享设置
  3. 提升编程水平的靠谱方法
  4. Centos下安装FTP并进行虚拟用户访问方式配置
  5. 如何在三年内快速成长为一名技术专家
  6. java线程死亡_java – 如何暂停main()直到所有其他线程死亡?
  7. Kotlin 势必取代 Java?
  8. L--弹出层js实例
  9. C# XElement
  10. maria安装包mysql_Redhat 7.3安装系统自带Mariadb安装包
  11. 关于震旦AD248B双面打印
  12. IDEA安装谷歌翻译插件Translation
  13. 浏览器打开任意可执行exe文件方法
  14. 学术论文常用网址,自己收藏和分享给大家
  15. 稀疏数组——优化五子棋游戏的小技巧
  16. html中table的样式设置
  17. 硬盘变成RAW 修复
  18. 计算机组成中的mod2怎么理解,计算机组成原理个人总结(2)
  19. 短视频头部效应加剧,秒拍整军三月强势归来
  20. 木木的常用软件点评(1)------系统必备软件篇

热门文章

  1. SCT2280,一款17V 8A输出同步降压DCDC转换器
  2. 鸢尾花python程序_python实现机器学习的小项目-鸢尾花
  3. linux fedora安装教程,Fedora 13正式版安装图文教程
  4. [置顶] 游戏开发技术总结(经典之作)第八集 脚踏实地-----游戏角色自动寻路、路径搜索算法...
  5. Gatsby 学习 - 01 Gatsby 介绍、创建页面
  6. 【伺服电机/舵机与Arduino使用教程】
  7. setSize()和setPreferredSize(new Dimension())使用小结
  8. Excel单个单元格多个数值求平均值
  9. 2022-2028年中国小额贷款行业市场现状分析及发展前景展望报告
  10. 巧克力可能的健康益处