zl程序教程

您现在的位置是:首页 >  其他

当前栏目

opened too many files详解编程语言

编程语言 详解 too Files many opened
2023-06-13 09:11:52 时间
opened too many files

linux把socket当做文件管理,一个socket就是一个文件描述符,同时linux对文件描述符分别在进程和系统级别进行限制,也就是说一个进程打开多少个文件是受限制的,同时操作系统中所有进程打开的文件数也受限制。
通常出现此问题是由于程序中打开了文件流或者socket,没有关闭,导致超过,进程内最大文件数限制;
使用ulimit -a 查看限制数

[root@localhost ~]# 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) 30197 

max locked memory (kbytes, -l) 64 

max memory size (kbytes, -m) unlimited 

open files (-n) 1024 //最多打开1024个文件 

pipe size (512 bytes, -p) 8 

POSIX message queues (bytes, -q) 819200 

real-time priority (-r) 0 

stack size (kbytes, -s) 8192 

cpu time (seconds, -t) unlimited 

max user processes (-u) 30197 

virtual memory (kbytes, -v) unlimited 

file locks (-x) unlimited 

然后使用lsof -p pid 来查看进程打开的文件描述符,看看什么样的
这里写图片描述
然后使用lsof -p pid|grep keyword|wc -l 查看某类型的文件描述符一共打开多少;
基于以上3个步骤,基本可以确定是打开文件过多导致,修复办法就是找到程序中,操作文件或socket的地方,确保使用完毕后关闭流或socket

IT虾米网
IT虾米网
IT虾米网

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20263.html

cjavalinuxxml