Linux-文件句柄数

一、文件句柄不足产生原因

文件句柄过多原因:
1、打开文件未释放
2、打开管道未释放
3、建立网络连接未释放(pipe,eventpoll多出现在 NIO 网络编程未释放资源 —— selector.close())
4、创建进程调用命令未释放(Runtime.exe(...) 得到的 Process, InputStream, OutputStream 未关闭,这也会导致 pipe,eventpoll 未释放)
5、mina库使用NIO时未使用connector.dispose();
6、netty3库使用NIO时未使用bootstrap.shutdown() 或bootstrap.releaseExternalResources();

二、查看文件句柄使用情况

系统级文件句柄数配置
[weblogic@hkczjjapp arms_bid]$ cat /proc/sys/fs/file-nr
2112    0    1617504-----(已分配文件句柄的数目、已分配未使用文件句柄的数目、文件句柄的最大数目)

用户级文件句柄数配置-默认
[weblogic@hkczjjapp arms_bid]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63594
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

用户级文件句柄数-实际数 [weblogic@hkczjjapp arms_bid]$ ulimit
-n 1024

三、文件句柄使用情况分析

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr-----各进程打开句柄数
lsof -n|awk '{print $3}'|sort|uniq -c|sort -nr-----各用户打开句柄数
lsof -n|awk '{print $1}'|sort|uniq -c|sort -nr-----各命令打开句柄数

查看各PID使用句柄数 [weblogic@hkczjjapp arms_bid]$ lsof
-n |awk '{print $2}'|sort|uniq -c |sort -nr|more-----(使用数量、PID) 1284 98765 1030 53348
查看PID句柄具体使用情况 [weblogic@hkczjjapp arms_bid]$ lsof
-p 98765 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 98765 weblogic 682w REG 253,0 290 1985289 /home/weblogic/bid/WEB-INF/logs/logAudit.log java 98765 weblogic 683w REG 253,0 0 1973768 /home/weblogic/bid/WEB-INF/logs/esb.log java 98765 weblogic 684w REG 253,0 105838 1985316 /home/weblogic/bid/WEB-INF/logs/emp.log java 98765 weblogic 685w REG 253,0 5951552 1985308 /home/weblogic/bid/WEB-INF/logs/arms.log java 98765 weblogic 686w REG 253,0 0 1973829 /home/weblogic/bid/WEB-INF/logs/trace.log java 98765 weblogic 687w REG 253,0 6122867 1985277 /home/weblogic/bid/WEB-INF/logs/console.log 参数详解: COMMAND:进程的名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等 DEVICE:指定磁盘的名称 SIZE:文件的大小 NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称

四、文件句柄数配置修改

[weblogic@hkczjjapp arms_bid]$ vi /etc/security/limits.conf
* soft nofile 65535 * hard nofile 65535 末尾添加以上配置(root),重新登录生效,硬限制是实际的限制,而软限制,是warnning限制,超过这个数值只会做出warning
原文地址:https://www.cnblogs.com/chunxiaozhang/p/13992794.html