linux函数参数限制吗,linux中ulimit 的一些参数学习之 open files

一、问题

bizware在部署中有一项

4、检查文件打开数

命令:ulimit  -a

b1f3b29ae893?utm_campaign=maleskine

由于不了解就去学习了下这个参数: open files

"open files (-n) 1024 "是Linux操作系统对一个进程打开的文件句柄数量的限制;

这个不是简单的打开文件的个数,而且很多操作会使用文件句柄,比如创建socket链路等,所以经常会遇到应用程序会报Too many open files的错误,是因为open files 数目不够。

说明:

1. file-max的含义。man proc,可得到file-max的描述:

/proc/sys/fs/file-max

This file defines a system-wide limit on the number of open files for all processes. (See

also setrlimit(2), which can be used by a process to set the per-process limit,

RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages

about running out of file handles, try increasing this value:

即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。

也就是说,这项参数是系统级别的。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,应用程序就是通过fd识别该文件/设备/服务..

【重点: 所有进程一共、系统级的,所以linux下多用户的情况之前会相互影响,尤其业务量并发的时候,每个链路都占用一个文件句柄。】

二、解决问题,了解了基本函数,问题解决相对比较简单

1.修改file-max

# echo  6553560 > /proc/sys/fs/file-max  //sysctl -w "fs.file-max=34166",前面2种重启机器后会恢复为默认值或# vim /etc/sysctl.conf, 加入以下内容,重启生效fs.file-max=6553560

2.修改ulimit的open file,系统默认的ulimit对文件打开数量的限制是1024

# ulimit -HSn 102400  //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile或# vim /etc/security/limits.conf  //加入以下配置,重启即可生效*soft nofile65535*hard nofile65535

三、回顾分析一下问题

扩大open files数量限制的操作可以起效,但在此之前相比你应该也对为何出错会感兴趣吧,不妨先分析一下。尤其是在已经设置很大值的情况,如何去定位哪些进程占用较多的文件句柄,是否合理?

通常使用 lsof

linux下的命令, 全称:list system open files

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充地发挥其功能。直接输入lsof部分输出为:

常规统计:

1. lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more

以root用户执行上面的脚本,对进程打开的文件句柄进行排序,可能出现的结果如下:

# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more

131 24204 3. 57 24244 4. 57 24231 5. 56 24264

其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。

ps -aef|grep 24204

b1f3b29ae893?utm_campaign=maleskine

图片发自简书App

然后跟踪进一步分析进程或者pstree分析线程等;

总结:初步简单学习了一下,还需要更加深入的去学习时间操作来积累;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值