Linux下文件描述符

文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix操作系

统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix通常有一个系统级的限制。在UNIX/Linux平台上,对于控制台

(Console)的标准输入(0),标准输出(1),标准错误(2)输出也对应了三个文件描述符。

对于squid,因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid

用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket

被关闭,squid不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。

对于Apache,当使用了很多,

而每个主机又使用了不同的日志文件时,Apache可能会遭遇耗尽文件描述符(有时也称为file handles)的困境。

Apache使用的文件描述符总数如下:每个不同的错误日志文件一个、 每个其他日志文件指令一个、再加10~20个作为内部使用。Unix操作限制了每个进程可以使用的文件描述符数量。典型上限是64个,但可以进行扩充,直至到达一个很大的硬限制为止(a large hard-limit)。

linux下最大文件描述符的限制有两个方面,一个是用户级的限制,另外一个则是系统级限制。

以下是查看文件描述符的三种方式:

[root@localhost ~]# sysctl -a | grep -i file-max --color

fs.file-max = 392036

[root@localhost ~]# cat /proc/sys/fs/file-max

392036

[root@localhost ~]# ulimit -n

1024

[root@localhost ~]#

系统级限制:sysctl命令和proc文件系统中查看到的数值是一样的,这属于系统级限制,它是限制所有用户打开文件描述符的总和

用户级限制:ulimit命令看到的是用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用文件描述符的总数不能超过这个限制

如何修改文件描述符的值?

1、修改用户级限制

[root@localhost ~]# ulimit-SHn 10240

[root@localhost ~]# ulimit  -n

10240

[root@localhost ~]#

以上的修改只对当前会话起作用,是临时性的,如果需要永久修改,则要修改如下:

[root@localhost ~]# grep -vE'^$|^#' /etc/security/limits.conf

*                hard nofile                  4096

[root@localhost ~]#

//默认配置文件中只有hard选项,soft 指的是当前系统生效的设置值,hard 表明系统中所能设定的最大值

[root@localhost ~]# grep -vE'^$|^#' /etc/security/limits.conf

*      hard         nofile       10240

*      soft         nofile      10240

[root@localhost ~]#

// soft<=hard soft的限制不能比hard限制高

2、修改系统限制

[root@localhost ~]# sysctl -wfs.file-max=400000

fs.file-max = 400000

[root@localhost ~]# echo350000 > /proc/sys/fs/file-max  //重启后失效

[root@localhost ~]# cat /proc/sys/fs/file-max

350000

[root@localhost ~]#

//以上是临时修改文件描述符

//永久修改把fs.file-max=400000添加到/etc/sysctl.conf中,使用sysctl -p即可

下面是摘自kernel document中关于file-max和file-nr参数的说明

file-max & file-nr:

The kernel allocates file handles dynamically, but as yet it doesn't free them again.

内核可以动态的分配文件句柄,但到目前为止是不会释放它们的

The value in file-max denotes the maximum number of file handles

that the Linux kernel will allocate. When you get lots of error messages

about running out of file handles, you might want to increase this

limit.

file-max的值是linux内核可以分配的最大文件句柄数。如果你看到了很多关于打开文件数已经达到了最大值的错误信息,你可以试着增加该值的限制

Historically, the three values in file-nr denoted the number of

allocated file handles, the number of allocated but unused file handles,

and the maximum number of file handles. Linux 2.6 always reports 0 as

the number of free file handles -- this is not an error, it just means

that the number of allocated file handles exactly matches the number of

used file handles.

在kernel 2.6之前的版本中,file-nr

中的值由三部分组成,分别为:1.已经分配的文件句柄数,2.已经分配单没有使用的文件句柄数,3.最大文件句柄数。但在kernel

2.6版本中第二项的值总为0,这并不是一个错误,它实际上意味着已经分配的文件句柄无一浪费的都已经被使用了

参考文档:维基百科

linux用户文件描述符2表示,Linux下文件描述符相关推荐

  1. 安卓 linux服务器文件夹,Android系统下根目录下文件

    在adb shell 中看根目录下的所有文件,今天来捋一捋. 有些人说,在adb shell下看到的手机根目录就是system分区. 我们还可以在根目录执行df命令或者mount命令查看具体挂载的所有 ...

  2. linux用户和群组的作用,linux中的用户、群组和权限

    新建用户natasha,uid为1000,gid为555,备注信息为"master" groupadd -g 555 natasha useradd -u 1000 -g 555  ...

  3. Linux用户管理详解大结局(下)

    Linux用户管理详解(下) 我们已经可以通过创建不同的用户来防止其他人使用自己的账号,之后每个账户对应一个单独的用户密码,构成了一个基本的用户管理思路.为了方便管理还可以使用组来设置相同属性的用户. ...

  4. windows同步linux用户,用winbind实现windowsPDC和linux系统的帐号同步

    测试环境:操作系统:redflagDC4.1 samba版本:samba-3.0.2a-9AX ip:172.16.100.2 (注意,一定要使用比较"干净"的DC4.1环境,就用 ...

  5. linux用户目录设置权限设置,为linux目录设置多个用户权限

    为linux目录设置多个用户权限 关注:252  答案:2  mip版 解决时间 2021-01-26 18:25 提问者情婲.毒 2021-01-26 13:35 我想为linux的某个目录设置5个 ...

  6. 解决 ‘Win7Win10系统电脑文件误删除且清空回收站条件下文件完美恢复’(完全免费)

    1.引言 估计很多朋友都和我一样,硬盘太满了或者脑子一抽筋,立刻把文件删除并且清空了回收站,过了一会,忽然脑门一拍,马上又想恢复数据了,怎么办?于是,我和大部人的做法一样,疯狂百度,发现,弹出来的是某 ...

  7. linux用户密码管理,Linux_详解Linux中的用户密码管理命令passwd和change,passwd 修改用户密码参数 nbsp - phpStudy...

    详解Linux中的用户密码管理命令passwd和change passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用 ...

  8. linux用户开启xftp,XFTP如何连接LINUX虚拟机

    linux虚拟机可以方便我们学习linux,但是将文件传入linux虚拟机比较麻烦,通过xftp就可以很方便的将资料传入linux.下面一起来跟着学习啦小编看看如何让XFTP连接LINUX虚拟机吧! ...

  9. linux用户的邮件存在哪里,在Linux系统中收发及查看邮件

    系统收到邮件都会保存在"/var/spool/mail/[linux用户名]"文件中. 在linux中输入mail,就进行了收件箱,并显示二十封邮件列表. 此时命令提示符为&quo ...

  10. linux用户解锁不了,无法解锁Linux用户帐户

    我今天在运行SUSE Linux Enterprise Server 11 SP2的服务器中使用一个用户帐户也面临相同的问题,即使在重置密码并将有效期更改为0之后(chage -d 0 userID) ...

最新文章

  1. JS正则表达式使用方法及示例
  2. Nginx 学习 —— 负载均衡
  3. (五)springcloud微服务分布式云架构 - 云架构代码结构构建
  4. linux 帮助文档管理,Linux系统帮助文件使用——man命令
  5. matlab 数值解 期权顶级啊,潮盈期权院高胜率交易技巧系列之二----期权交易策略及基于MATLAB统计套利介绍...
  6. kali系统apt设置代理
  7. 数据持久化基础知识——属性列表
  8. php errorcode,errorCode.php
  9. webservice和jms的区别
  10. build-essential 软件包
  11. 按键精灵 获取网页flash游戏 句柄 以360浏览器为例
  12. 爬取网易严选某种衣服商品数据,实现可视化,结论有点吓人
  13. 逍遥模拟器获取服务器信息出错,前沿科技资讯:逍遥安卓模拟器网络不稳定如何办(显示网络异常解决方法)...
  14. HDU-3605 Escape
  15. day2——泰波那契数列
  16. 【弄nèng - Elasticsearch】运维篇 —— ES分片unassigned解决方案(ALLOCATION_FAILED,REPLICA_ADDED等
  17. Mac 常用软件注册码
  18. 卡尔曼滤波原理详解(一)
  19. 1. 帮贡排序-模拟与高精度(普及/提高-)
  20. Html显示3D Obj模型(支持mtl纹理)的源码方案(2:一张图创建人脸模型)

热门文章

  1. #ifndef 和 #endif
  2. 通过Python获取当前键盘上的CapsLock按键状态和实现键盘操作
  3. 云原生之docker详解
  4. php多维数组添加元素,PHP中如何将元素添加到多维数组
  5. 商业智能BI财务分析,狭义的财务分析和广义的财务分析有何不同?
  6. 奥运过后只有五种人才可以买房
  7. 作业帮 php面试题,英文题目的PHP面试题及答案
  8. 一个html,3D 标签 鼓励自己
  9. 手电可以这么玩!一个牛逼的光电涂鸦作品!当手电筒遇到了单反相机,于是不可思议的一幕发生了。。
  10. ubuntu22.04安装wechat微信