Linux-文件打开数配置实践
配置文件打开数
- 内核参数限制-总限制
/etc/sysctl.conf
file-max 是设置系统所有进程一共可以打开的文件数量,默认系统使用文件打开数为系统内存的10% 。
nr_open 是单个进程可分配的最大文件数,这个值通常默认是 1024*1024 (1048576)。
- 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-文件打开数配置实践相关推荐
- linux 文件打开数设置, too ma
临时解决 ulimit -HSn 65536 永久解决 编辑文件,添加以下两行: /etc/security/limits.conf soft nofile 65536 hard nofile 655 ...
- Linux比较大文件内容,Linux系统最大文件打开数优化,解决Too many open files报错
这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需. 一.报错截图: 图为resin的报错日志,很明显提示了Too many ...
- linux查看文件打开限制,Linux最大文件打开数使用经验详解
首先普及几个知识:Linux下一切都是文件,包括输入输出设备.网络连接.socket.管道等 与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打 ...
- [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改
备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...
- 第六章 Linux 文件与目录配置
第六章 Linux 文件与目录配置 6.1目录与路径 6.1.1 相对路径与绝对路径 6.1.2 目录的相关操作 cd //变换目录 . //代表此层目录 .. //代表上一层目录 - //前一个工作 ...
- RHEL修改最大文件打开数,关于epoll socket Too many open files问题的解决
在做对LINUX服务器进行并发压力测试的时候,当并发数超过1024时,系统提示:Too many open files,导致此问题的原因是LINUX系统限制了文件最大打开数,如下是解决此问题的办法. ...
- linux 最大文件打开数nofile及nr_open、file-max说明
本文为研究http://www.2cto.com/os/201510/446342.html博文结论 1./etc/security/limits.conf中指定的nofile的值,nofile有上限 ...
- weblogic 文件打开数_Weblogic任意文件读取和任意文件上传
引言 weblogic中两个CVE漏洞比较有意思,所以复现一下,该两个漏洞需要在poc中加入用户名和密码(cookie)才能实现. 环境搭建 环境搭建: 首先安装weblogic 下载地址 http: ...
- linux打开文件慢,Linux 文件打开过多 (Too many open files)
如图是程序运行了一段时间后抛出来的一个bug, 刚开始看这个bug的时候各种网上找答案, 无外乎教你怎么改ulimit(就是linux最大打开文件数), 当然不是说改这个没有用, 作为程序开发者来说, ...
- linux 如何关闭文件,Linux文件打开与关闭
可以使用库函数堆文件进行操作,同时也可以使用系统调用来进行文件操作.主要针对以下几个系统调用函数: open(2).close(2).read(2).write(2).lseek(2).fcntl(2 ...
最新文章
- EntityCURD操作的参数和返回值
- Qt——模态、非模态
- Delphi.net Chrome
- python入门有基础-Python基础知识入门,这三个原则是你要知道的,还有教程
- linux java top_linux top命令 监测系统性能
- pat1035. Password (20)
- In 2018, the release of Huawei‘s p20 pro
- 游戏开发之多态及虚函数(C++基础)
- 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
- Mysql 根类别和子类别,如何在MySQL中设计类别和子类别?
- Centos7安装iNode客户端
- 两强格局初定,网易云能拿什么跟腾讯音乐打
- 采用WPF开发第二版OFD阅读器,持续完善中,敬请期待
- 世界上有多少数据?应该如何保护?
- 京东手机登录页面html,京东登录页面.html
- 鸿蒙系统怎么设置上网速度,苹果手机上网速度慢怎么办!手把手教你如何解决...
- JSON数据中带有HTML标签解决方法
- openharmony开发TS语言基础
- 酒越陈越醇,OPPO Reno越更越香
- 计算机的存储器有哪2类,存储器有哪两种