linux 查看文件打开句柄数(搞懂并解决linux系统下打开的文件句柄数过多)

在linux下一切皆文件。

每建立一个tcp都会打开一个文件句柄,所以高并发的web场景下,如果代码写的有问题,没有及时释放资源,很可能会遇到open files过多的问题。

解决这个问题有两条路

最大文件句柄数确实设置的太小,那么就去加大最大文件句柄数程序有问题,需要去找到是哪个进程

修改最大文件句柄数。

修改最大文件句柄数的麻烦点在于要修改的参数比较多。而且这几个参数之间还有耦合关系。

首先有这几个参数要改

fs.nr_open (不一定需要改)nofile(其实 nofile 还分 soft 和 hard)fs.file-max

这几个参数的区别

soft nofile 和 fs.nr_open的作用一样广电大流量卡,它两都是限制的单个进程的最大文件数量。区别是 soft nofile 可以按用户来配置,而 fs.nr_open 所有用户只能配一个,在一台 Linux 上只能配一次。。

nr_open的默认值是1024*1024 (1048576)。对于绝大多数系统都够了。

所以我上面写了这个不一定要改。

如果要改,不要使用 下面这种方式

echo 1100000 > /proc/sys/fs/nr_open

因为重启,这种设置就会失效。建议使用修改/etc/sysctl.conf的方式

# vi /etc/sysctl.conf fs.nr_open=1100000

修改soft nofile 和 hard nofile的方广电大流量卡

# vi /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000

hard和soft设置成一样的,因为实际生效的值会按二者里最低的来

fs.file-max: 整个系统上可打开的最大文件数,但不限制 root 用户

file-max 这个参数只限制非 root 用户。当发生文件打开过多时,使用普通用户无法使用 ps,kill 等命令,就是这个原因。所以遇到这种情况直接用 root 去 kill 就行了

file-max一般为内存大小(KB)的10%来计算,如果使用shell,可以这样计算

grepMemTotal /proc/广电大流量卡meminfo | awk{printf(“%d”,$2/10)}

另外,注意一点。

修改了fiel-max最好同步修改下inode-max

inode-max 约等于 3或4 倍file-max。

否则可能改好了文件句柄数的问题,后面与会遇到inode不足的问题。

关于ulimit

有人喜欢使用ulimit命令来修改open_files。因为这样比较方便。

不建议这样做,因为ulimit修改的配置,重启都会失效。

ulimit就用来查看就好了。

ulimit提供对shell及其启动的进程的可用资源(包括文件句柄, 进程数量, core文件大小等)的控制。

这是进程级别的, 也就是说系统中某个session及其启广电大流量卡动的每个进程能打开多少个文件描述符, 能fork出多少个子进程等… 。

总之:

我觉得比较稳妥点的修改方法是干脆都直接用 conf 文件的方式来改。这样比较统一,也比较安全。

# vi /etc/sysctl.conf fs.nr_open=1100000 fs.file-max=1100000 //多留点buffer # sysctl -p # vi /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 # sysctl -p

找到那个进程

另一条路就是我们配置的参数够大了,但是还是出现告警,那就是运行的某个进程有问题,所以广电大流量卡要找到他。

显示现在打开的总的文件数

cat /proc/sys/fs/file-nr

应该加上告警,达到80%了需要告警。

查看openfiles最多的进程

lsof –Ki|awk {print $2}|sort|uniq –c|sort -n -r|head –6

这个命令可能会执行的很长时间,因为告警的时候文件数已经很多了,统计出来需要时间。

所以一定要在收到告警时就进行处理。千万不用等到句柄数都用完了,那时候命令可能都执行不了了。


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/52575.html

(0)
sunyaqunsunyaqun
上一篇 2024年6月14日
下一篇 2024年6月14日

相关推荐

发表回复

登录后才能评论