Linux(CentOS 7)修改max open files的值

阅读目录

  • 系统全局参数file-max
  • 如果是系统服务
  • 临时修改,重启后失效,不对运行中程序生效
  • 永久修改,需要重启系统
  • 动态修改运行中程序的值

新安装的linux系统允许每个程序的最大打开文件数默认是1024,可以通过ulimit -n命令来查看,查看全部限制,则可以使用命令ulimit -a

[root@test ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63399
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63399
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
修改这个值,可以有这些方法
回到顶部

系统全局参数file-max

cat /proc/sys/fs/file-max
1613096

系统级别的限制

回到顶部

如果是系统服务

编辑服务配置文件:/usr/lib/systemd/system/SERVICE_NAME.service,在[Service]段添加行:LimitNOFILE=65535,下面是nginx的示例:

vim nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/opt/web_engine/nginx/run/nginx.pid
ExecStartPre=/opt/web_engine/nginx/sbin/nginx -t -c /opt/web_engine/nginx/conf/nginx.conf
ExecStart=/opt/web_engine/nginx/sbin/nginx -c /opt/web_engine/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

运行systemctl daemon-reload让配置文件激活,再重启服务,即可让配置生效

查看配置是否生效:ps -ef|grep nginx  得到nginx主进程的PID
cat /proc/$PID/limits  如果看到Max open files 65535 65535 files 则说明配置已生效
回到顶部

临时修改,重启后失效,不对运行中程序生效

运行命令:ulimit -HSn 65535  该命令也等同于ulimit -n 65535
H为硬限制,S为软限制,需要注意的是,退出登录后,将失效
回到顶部

永久修改,需要重启系统

一般方式:
vim /etc/security/limits.conf  添加
* soft nofile 65535
* hard nofile 65535
*代表用户,全部用户或用户组
#MySQL env
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536
mysql soft stack 10240

上面的nproc是允许创建的子进程数目,不能过大,防止accidental fork bombs,一般4096比较合适

高级一点的做法:
将配置写到/etc/security/limits.d/nofile.conf  这种不直接写到系统limits文件中,当limits需要升级时,不会丢失配置
另外一种做法:
在系统启动过程中,执行一次ulimit -SHn 65533,比如可以写到/etc/rc.local中,或者/etc/profile中等
回到顶部

动态修改运行中程序的值

不安全的作法,但是在不可中止运行中程序的时候,会很管用
直接修改文件:/proc/$PID/limits  的这一行Max open files 65535 65535 files
命令行操作:

?
1
prlimit --pid 24340 --nofile=65535:65535

  

(0)

相关推荐

  • nginx修改上传文件大小限制

    自己搭的服务器,用nginx做代理.上传超过1M大的客户端文件无法正常上传,nginx直接报错,上传文件太大,于是修改了下nginx的配置,就可以了. 按照网上所说的加上client_max_body ...

  • linux centos修改root密码

    linux centos修改root密码 步骤一:使用putty或其他远程终端工具登录root用户到服务器,在命令行输入passwd命令,回车. 步骤二:这里提示让输入新的密码,输入新的密码,注意这里 ...

  • 香橙派OrangePi 3开发板在Linux系统下修改Framebuffer 宽度和高度的方法

    注意:此方法只适用于 linux4.9 内核的系统,linux5.4 内核的系统无法使用 1) 在 linux 系统的/boot/orangepiEnv.txt 中有 fb0_width 和 fb0_ ...

  • 宝塔Linux面板如何修改默认的SSH端口号

    宝塔Linux面板如何修改默认的SSH端口号 步骤一:登录到宝塔面板,在左侧菜单栏找到并打开安全菜单,找到SSH端口号,默认端口号是22,输入新的端口号,点击更改,需要注意的是如果购买的服务器有安全组 ...

  • Linux CentOS 6.5 卸载、安装JDK1.8

    卸载系统自带的jdk 1. 查询系统是否已经安装了jdk rpm -qa|grep java 2. 卸载已安装的jdk, 系统可能会自带多个jdk版本, 按需卸载 rpm -e --nodeps ja ...

  • Linux - CentOS 7 通过Yum源安装 MySql 5.7

    添加MySQL Yum存储库 从官网下载最新的mysql源 官网地址:https://dev.mysql.com/downloads/repo/yum/ 选择并下载适用于平台的发行包. 然后,在Lin ...

  • Linux命令——chmod(修改读写执行等权限)

    Linux命令--chmod 命令描述 变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权 ...

  • Linux Centos 6.6搭建SFTP服务器

    众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的.下面为SFTP用户权限设置方法.必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需 ...

  • Centos 7修改Jenkins默认工作空间

    在Jenkins新版本(我的是2.164.2)里,系统管理  -> 系统设置中只有主目录,没有工作空间根目录和构建记录根目录相关的选项,因此无法像之前一样在系统中直接配置,需要通过配置文件来修改 ...

  • 编程语言Linux(CentOS)下PHP扩展PDO编译安装的方法,centospdo_PHP教程

    Linux(CentOS)下PHP扩展PDO编译安装的方法,centospdo 本文讲述了Linux(CentOS)下PHP扩展PDO编译安装的方法.分享给大家供大家参考,具体如下: 这里是以 Cen ...