Centos7 更改最大打开文件描述符数

系统环境

1
2
CentOS Linux release 7.6.1810 (Core)
Linux 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

临时更改最大打开文件描述符数

1
2
3
4
5
# 查看限制
# ulimit -n

# 临时更改限制(系统重启失效)
# ulimit -n 1048576

永久更改最大打开文件描述符数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 第一步
# vim /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576 #星号表示对所有用户生效

# 第二步
# vim /etc/sysctl.conf
fs.file-max = 1048576 #可执行"sysctl -p"使fs.file-max生效

# 第三步
# vim /etc/pam.d/login
session required pam_limits.so #查看配置文件有没有这行,没有就加上

# 第四步
# reboot #重启系统

# 第五步(查看是否生效)
# ulimit -n
# sysctl fs.file-max
# cat /proc/PID/limits #PID是应用的进程ID,在输出结果中查看"Max open files"的显示值

更改 Supervisor 的最大打开文件描述符数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 如果应用使用supervisor来管理,则需要按以下步骤配置,否则上面的配置对使用supervisor管理的应用不生效

# 修改supervisor的配置文件
# vim /etc/supervisord.conf
[supervisord]
minfds=1048576

# 修改supervisor的systemctl启动脚本,添加LimitNOFILE属性
# vim /usr/lib/systemd/system/supervisord.service
[Service]
LimitNOFILE=1048576

# 重启supervisord生效
# systemctl daemon-reload
# systemctl restart supervisord

更改 MySQL(RPM 方式安装)的最大打开文件描述符数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 如果是通过yum源或者rpm包的方式安装mysql,那么上面的配置对mysql无效,因为systemctl启动脚本覆盖了ulimit配置

# 查看mysql的最大打开文件描述符数
# cat /proc/`pidof mysqld`/limits
# egrep '^(Limit|Max open files)' /proc/`pidof mysqld`/limits

# 第一种方法:直接修改mysql的systemctl启动脚本(不建议修改mysqld.service,这样会影响下次升级)
# vim /usr/lib/systemd/system/mysqld.service
LimitNOFILE=1048576

# 第二种方法:完美解决升级问题
# mkdir /usr/lib/systemd/system/mysqld.service.d
# vim /usr/lib/systemd/system/mysqld.service.d/override.conf
[Service]
LimitNOFILE=1048576

# 重启mysql生效
# systemctl daemon-reload
# systemctl restart mysqld