`

Linux 文件句柄限制分析

阅读更多

 

引之:
在一个工作中的实践项目中,项目是一个部署到 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 增加下面的代码:

你的用户名  soft nofile 65535
你的用户名 hard nofile 65535

 

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


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


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

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

 

查看系统总限制 命令:

cat /proc/sys/fs/file-max

 

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

cat /proc/sys/fs/file-nr

 

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

lsof -p pid
 

某个进程开了几个句柄

lsof -p pid |wc -l
 

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

lsof path/filename

 

 

  • 大小: 6.4 KB
1
0
分享到:
评论

相关推荐

    Linux文件句柄限制总结

    文件句柄 文章目录文件句柄查看用户级别(nofile)单个进程级别(nr_...关于什么是文件句柄,这里不做讨论,其实linux中没有文件句柄,叫做文件描述符fd 超过最大句柄限制,报错:java.io.IOException: Too many open

    marmot-cn#readingNotes#设置linux打开文件句柄:proc:sys:fs:file-max和ulimit

    设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是

    3 种方法教你在 Linux 中修改打开文件数量限制.doc

    当文件被打开访问时,操作系统临时分配一个名为文件句柄的数字。主内存的一个特殊区域是为文件句柄预留的,这个区域的大小决定了一次可以打开多少个文件。

    linux下文件描述符限制问题

    linux下文件描述符最大限制默认最大为1024,通过 [root@localhost ~]# ulimit -n 1024 这个命令可以查看。此值可以修改。 进程的文件描述符,可以通过 [root@localhost ~]# ls -al /proc/13623/fd |wc -l 59 输出...

    linux下查看系统进程占用的句柄数方法

    —查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 —-查看当前进程打开了多少句柄数 # lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more 131 24204  57 24244  57 24231 …….. 其中第一...

    Linux下高并发socket最大连接数所受的各种限制

    在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket...

    linux常用命令脚本.txt

    # 查看当前进程打开了多少个文件句柄呢 lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more # 禁止接收从 DNS 服务器发送过来并包含 googleusercontent 的包 iptables -I INPUT -p udp --sport 53 -m string -...

    增加系统的最大打开文件数

    这个数字说明了一个普通用户能够在一个单独会话中所能打开最大的文件数目。注意。如果是root,以下操作不能使ulimit -n的输出增加。因为用户root用户不受这个ulimit限制。只有普通用户才会受这个限制。

    linux epoll机制详解

    1.单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;(在linux内核头文件中,有这样的定义:#define __FD...

    针对高并发低延迟运行环境低配的程序优化建议1

    主要痛点:连接数无法达到延迟高或抖动内存激增服务部署困难针对连接数无法达到情况:linux系统限制:系统全局允许分配的最大文件句柄数:

    应用程序注册为系统服务,支持WindowsLinux.zip

    支持健康检测,限制内存、线程数、句柄数,超限时重启应用服务 支持应用服务定时重启,通过配置指定 支持看门狗WatchDog,通过配置指定要守护的目标应用服务,如果目标停止则启动 支持配置文件修改服务名,一个应用...

    大名鼎鼎SWFUpload- Flash+JS 上传

    整个文件上传完成之后,下一个页面才会显示,并且不能对选择的文件做预设的文件检验,例如文件大小限制,文件类型限制。当文件上传时,用户获得的可用的反馈信息很少。 传统的HTML上传模式十分简单,线性的,几乎...

    OSEICQ即时通讯软件(开源例子)

    [找出SOCKET句柄] [用DuplicateHandle()函数将其SOCKET转换为能被自己使用] [用转换后的SOCKET进行数据传输] 6)支持邮件接受和发送协议(PoP3/STMP)提供邮件接口,可以在系统内集成邮件系统 开发环境 1)纯...

    网络安全技术参数.docx

    能实现内核级进程强访问控制,允许对进程配置进程以读内存、写内存、复制句柄、终止进程等权限的安全策略(请提供产品功能模块截图) 7. 能实现内核级服务强访问控制,能够阻止新增的服务及驱动在系统中的加载,...

    Loadrunner报错日志

    3、linux上可以通过ulimit –HSn 4096来修改文件打开数限制,也可以通过ulimit -a 来查看。 4、linux上可以通过lsof -p pid | wc -l 来查看进程打开的句柄数。 五、问题描述has shut down the connection ...

    Tinyxml 源代码(VC6 & VS2005)

    提供了一个Linux Makefile和一个Windows Visual C++ .dsw 文件。只需要简单地编译和运行,它就会在你的磁盘上生成demotest.xml文件并在屏幕上输出。它还尝试用不同的方法遍历DOM并打印出结点数。 那个Linux ...

    一个进程池的服务器程序

    由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...

Global site tag (gtag.js) - Google Analytics