1、前言
有些生产环境的服务不能随便重启,最大文件打开数受到限制。
本文利用Prlimit动态修改正在运行进程最大文件打开数。
本文以修改nginx最大文件打开数为例。
2、实践
# 当前系统最大文件打开数
[root@vm-CentOS750221 ~]# ulimit -a|grep open
open files (-n) 2048
# 查看nginx的PID
[root@vm-CentOS750221 ~]# ps -ef|grep nginx
nobody 22183 32546 0 09:30 ? 00:00:00 nginx: worker process
nobody 22184 32546 0 09:30 ? 00:00:00 nginx: worker process
root 32546 1 0 9月03 ? 00:00:00 nginx: master process ../sbin/nginx
# 查看nginx的最大文件打开数
[root@vm-CentOS750221 ~]# cat /proc/32546/limits |grep open
Max open files 2048 65536 files
# 查看指定进程限制
[root@vm-CentOS750221 ~]# prlimit --pid 32546
RESOURCE DESCRIPTION SOFT HARD UNITS
AS address space limit unlimited unlimited 字节
CORE max core file size 0 unlimited 块
CPU CPU time unlimited unlimited 秒数
DATA max data size unlimited unlimited 字节
FSIZE max file size unlimited unlimited 块
LOCKS max number of file locks held unlimited unlimited
MEMLOCK max locked-in-memory address space 65536 65536 字节
MSGQUEUE max bytes in POSIX mqueues 819200 819200 字节
NICE max nice prio allowed to raise 0 0
NOFILE max number of open files 65536 65536
NPROC max number of processes 63458 63458
RSS max resident set size unlimited unlimited 页数
RTPRIO max real-time priority 0 0
RTTIME timeout for real-time tasks unlimited unlimited 毫秒数
SIGPENDING max number of pending signals 63458 63458
STACK max stack size 8388608 unlimited 字节
# 修改指定进程的最大文件打开数
[root@vm-CentOS750221 ~]# prlimit --pid 32546 --nofile=65535
# 验证是否成功
[root@vm-CentOS750221 ~]# prlimit --pid 32546 |grep NOFILE
NOFILE max number of open files 65535 65535