文档章节

Linux文件句柄限制分析

SBaof
 SBaof
发布于 2015/06/04 22:47
字数 728
阅读 94
收藏 0

引之:
在一个工作中的实践项目中,项目是一个部署到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 使配置生效

转自:http://www.linuxidc.com/Linux/2012-04/57942.htm


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

 

查看系统总限制命令:

Shell代码  

  1. cat /proc/sys/fs/file-max

 

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

Shell代码  

  1. cat /proc/sys/fs/file-nr

 

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

Shell代码  

  1. lsof -p pid

 

某个进程开了几个句柄:

Shell代码  

  1. lsof -p pid |wc -l

 

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

Shell代码  

  1. lsof path/filename


本文转载自:http://sesame.iteye.com/blog/425678

共有 人打赏支持
SBaof
粉丝 0
博文 19
码字总数 4788
作品 0
武汉
私信 提问
日志抛出大量Too Many Open Files的异常

转自:https://blog.csdn.net/shootyou/article/details/6579139 一、问题的表现: tomcat服务在重启之后,短时间内会承受大量访问,由于这个时候缓存还没建立,每次访问都将消耗一定资源(数...

sailikung
2018/08/24
0
0
使用 shell 脚本对 Linux 系统和进程资源进行监控

使用 Shell 对进程资源进行监控 检查进程是否存在 在对进程进行监控时,我们一般需要得到该进程的 ID,进程 ID 是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进...

Jay_Wei
2014/04/16
0
1
Linux下tomcat报错“java.net.SocketException: Too ma...

部署到linux下的tomcat,今天发现包了“java.net.SocketException: Too many open files”,以前从来没有遇到过,在此记录一下: 彻底解决问题的是第三步, 所以,可以直接跳到第三步去看解决...

Zero__One
2012/08/02
0
0
一个进程能够打开最大文件句柄数设到多大才合适(Linux)

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

mj4738
2011/12/01
0
1
Linux 打开文件数1024限制的原理以及解决办法

linux为redhat服务器版本(非个人版),必须设置的内容 ---------------------------------------------------------------------------- 1、/etc/pam.d/login 添加 session required /lib/......

华宰
2011/05/24
12.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

linux 扩展lv

相关概念 逻辑卷可以实现硬盘空间的动态划分和管理。 1】 物理卷 LV 处于最低层,可以是物理硬盘上的分区,也可以是整个物理硬盘 2】 卷组 VG 卷组建立在物理卷之上,一个卷组至少要包括一个...

hnairdb
7分钟前
0
0
如何快速定位Ruby函数源码

如何快速定位Ruby函数源码 1、gem gem which sidekiq 2、bundle bundle show redis 3、CTags Sublime extend ActiveSupport::Concernrescue_fromcurrent_company.cc_ad_tasks.creat......

mingle
8分钟前
0
0
基于 DataLakeAnalytics 的数据湖实践

随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析...

阿里云云栖社区
10分钟前
0
0
word文档处理成富文本生成sql语句导入mysql

问题:需要将大量的已存在的word文档导入到web项目里在网站展示,不可能通过编辑录入的方式处理,通过程序实现。 解决思路:通过读取word文档处理成html,再获取html富文本内容,拼接成sql,...

S三少S
16分钟前
29
0
WAF开放规则定义权:专家策略+用户自定义策略=Web安全

在第一期“漫说安全”栏目中,我们用四格漫画的形式介绍了基于深度学习的阿里云WAF到底智能在哪里,能帮客户解决什么问题。 在今天的这期栏目里,我们依然通过漫画这种通俗易懂的方式,与大家...

迷你芊宝宝
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部