配置文件打开数

  1. 内核参数限制-总限制

/etc/sysctl.conf
file-max 是设置系统所有进程一共可以打开的文件数量,默认系统使用文件打开数为系统内存的10% 。
nr_open 是单个进程可分配的最大文件数,这个值通常默认是 1024*1024 (1048576)。

  1. limit限制-每个用户的最大值限制

/etc/security/limits.d/90-nproc.conf
soft 软限制值就是程序的最大打开文件数限值
hard 硬限制值就是限制用户的软限制值所能调整的最大上限

*          soft     nofile    2048000
*          hard     nofile    2048000

所以可以得出内核参数限制文件打开数是 总量、进程级别,而limit的限制的是 用户进程级别
内核配置limit 需要注意各个限制维度

** 文件打开数可以设置200w左右,一般情况是没有到限制数据,就会把系统的内存和cpu资源吃完了**

问题

内容摘自 https://blog.51cto.com/techsnail/2137383

1、网络连接是否会占用打开文件数?

会,一个listening或established状态的网络连接会占用一个打开文件数。所以,在web应用的访问量稍大时,如果是单进程程序的话,即便不算应用本身打开的常规文件,由于网络连接数多,也会导致打开文件数轻轻松松就超过1024个。所以,对于CentOS/RedHat 6这种老系统来说,由于默认值比较小,所以是很有必要调整的。

根据main文档中的说法,一个打开文件可能是一个常规文件、一个目录、一个块设备文件、一个字符设备文件、一个正在执行的文件引用、一个库、一个流或一个网络文件(网络socket,NFS文件或UNIX socket)。所以,网络连接也算。我估计,这可能是因为在程序中,要访问这些对象时,都有点类似于访问文件那样,需要打开。

2、当你修改了/etc/security/limits.conf文件中的ulimit限值(包括打开文件数)后,是否需要重启正在运行的程序?

是。因为ulimit限值是跟你当前的shell绑定的,你在哪个shell里面启动了程序,如果程序本身没有修改ulimit限值的话,程序就会继承那个shell环境的ulimit限值。所以,通常修改limits.conf文件中的限值后,要退出当前shell并重新登录,让新的限值生效,再重启你的程序。

当然,正如我前面所说,要查看一个进程运行后实际生效的ulimit限值,使用cat /proc/pid/limits命令。如果程序自身有修改ulimit限值的话,你就会看到它的实际限值与你当前shell环境的限值是不一样的。

3、是否修改了/etc/security/limits.conf文件中的ulimit限值(包括打开文件数)后,就能保证它对所有的程序生效?

这是错误的。事实上来说,limits.conf文件中的限值对通过启动脚本来启动的程序并不生效。比如,nginx程序有一个启动脚本/etc/init.d/nginx并设置了开机启动。那么,即便你修改了limits.conf文件中的限值,当服务器重启后,nginx程序自动启动了,它的ulimit限值将还会是默认值,而不会是你设置的值。当然,如果你此时登录进系统,并通过nginx开机启动脚本重启了nginx程序,nginx进程的ulimit限值自然会变为你在limits.conf文件中设置的限值。

关于这个问题的原因,我也没有找到什么权威的资料说明,但我估计可能是这样的。以CentOS 6系统为例,因为系统启动时,系统中的所有进程都是由第一支程序/sbin/init带起的。而limits.conf文件中的限值对/sbin/init程序并不生效,所以/sbin/init进程的ulimit限值仍然是默认值。这就导致它所启动的所有子进程,即系统中的所有其它程序,都继承它的ulimit限值,即默认值。

对于这个问题,我想到的有两种解决办法。

第一种,是在程序的启动脚本里面最前面加上ulimit修改命令:

[root@gw ~]# vim /etc/init.d/mysql#!/bin/shulimit -n 65535

第二种,就是,很多程序其实都支持在程序配置文件中修改程序的最大打开文件数,这样就不用管shell环境的ulimit限值是什么了。比如,nginx可以通过worker_rlimit_nofile指令来设置它的worker进程的最大打开文件数。诸如MySQL其实也是支持的。

Linux-文件打开数配置实践相关推荐

  1. linux 文件打开数设置, too ma

    临时解决 ulimit -HSn 65536 永久解决 编辑文件,添加以下两行: /etc/security/limits.conf soft nofile 65536 hard nofile 655 ...

  2. Linux比较大文件内容,Linux系统最大文件打开数优化,解决Too many open files报错

    这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需. 一.报错截图: 图为resin的报错日志,很明显提示了Too many ...

  3. linux查看文件打开限制,Linux最大文件打开数使用经验详解

    首先普及几个知识:Linux下一切都是文件,包括输入输出设备.网络连接.socket.管道等 与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打 ...

  4. [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改

    备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...

  5. 第六章 Linux 文件与目录配置

    第六章 Linux 文件与目录配置 6.1目录与路径 6.1.1 相对路径与绝对路径 6.1.2 目录的相关操作 cd //变换目录 . //代表此层目录 .. //代表上一层目录 - //前一个工作 ...

  6. RHEL修改最大文件打开数,关于epoll socket Too many open files问题的解决

    在做对LINUX服务器进行并发压力测试的时候,当并发数超过1024时,系统提示:Too many open files,导致此问题的原因是LINUX系统限制了文件最大打开数,如下是解决此问题的办法. ...

  7. linux 最大文件打开数nofile及nr_open、file-max说明

    本文为研究http://www.2cto.com/os/201510/446342.html博文结论 1./etc/security/limits.conf中指定的nofile的值,nofile有上限 ...

  8. weblogic 文件打开数_Weblogic任意文件读取和任意文件上传

    引言 weblogic中两个CVE漏洞比较有意思,所以复现一下,该两个漏洞需要在poc中加入用户名和密码(cookie)才能实现. 环境搭建 环境搭建: 首先安装weblogic 下载地址 http: ...

  9. linux打开文件慢,Linux 文件打开过多 (Too many open files)

    如图是程序运行了一段时间后抛出来的一个bug, 刚开始看这个bug的时候各种网上找答案, 无外乎教你怎么改ulimit(就是linux最大打开文件数), 当然不是说改这个没有用, 作为程序开发者来说, ...

  10. linux 如何关闭文件,Linux文件打开与关闭

    可以使用库函数堆文件进行操作,同时也可以使用系统调用来进行文件操作.主要针对以下几个系统调用函数: open(2).close(2).read(2).write(2).lseek(2).fcntl(2 ...

最新文章

  1. EntityCURD操作的参数和返回值
  2. Qt——模态、非模态
  3. Delphi.net Chrome
  4. python入门有基础-Python基础知识入门,这三个原则是你要知道的,还有教程
  5. linux java top_linux top命令 监测系统性能
  6. pat1035. Password (20)
  7. In 2018, the release of Huawei‘s p20 pro
  8. 游戏开发之多态及虚函数(C++基础)
  9. 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
  10. Mysql 根类别和子类别,如何在MySQL中设计类别和子类别?
  11. Centos7安装iNode客户端
  12. 两强格局初定,网易云能拿什么跟腾讯音乐打
  13. 采用WPF开发第二版OFD阅读器,持续完善中,敬请期待
  14. 世界上有多少数据?应该如何保护?
  15. 京东手机登录页面html,京东登录页面.html
  16. 鸿蒙系统怎么设置上网速度,苹果手机上网速度慢怎么办!手把手教你如何解决...
  17. JSON数据中带有HTML标签解决方法
  18. openharmony开发TS语言基础
  19. 酒越陈越醇,OPPO Reno越更越香
  20. 计算机的存储器有哪2类,存储器有哪两种

热门文章

  1. redis cluster集群架构详解(十二)- 集群通信
  2. mapbox/minemap 获取比例尺
  3. 请求 Provisional headers are shown 问题
  4. C语言学习教程:搬箱子游戏开发源码分享
  5. 2020 Linux系统应用基础教程 期末复习【整理】 第五章 磁盘文件与目录管理
  6. 数字舵机和模拟舵机的区别
  7. matlab触发 ttl,请问如何用TTL信号触发单反相机拍摄
  8. Redis分布式锁真的安全吗?
  9. 米尔MYD-JX8MPQ yocto 编译流程 (记录)
  10. 搜索引擎的概念鄂州_搜索引擎的基本概念