• 对于注定会优秀的人来说,他所需要的,只是时间!
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!

利用prlimit动态修改应用进程的最大文件打开数

迎刃而解 eryajf 4个月前 (06-06) 471°C 已收录 0个评论
本文预计阅读时间 6 分钟

前言

系统中有些地方会进行资源的限制,其中的一个就是 open file 的限制,操作系统默认限制的是 1024, 这个值可以通过各种方式修改,本篇主要讲的是如何在线修改,生产上是不可能随便重启进程的。

实践

查看系统默认的限制

[root@lab8106 ~]# ulimit -a|grep open
open files                      (-n) 1024

默认的打开文件是 1024:

$ ps aux |grep nginx
root       5648  0.0  0.2  46184  2216 ?        Ss   15:23   0:00 nginx: master process nginx
www        5709  0.0  0.6  50780  6676 ?        S    15:43   0:00 nginx: worker process
root       7044  0.0  0.0 112728   984 pts/1    R+   17:16   0:00 grep --color=auto nginx

$ cat /proc/5648/limits |grep open
Max open files            10200                10200                files

Nginx 的进程的这个参数是 10200。

通过配置文件修改

这个参数控制是放在:

$ cat /usr/local/nginx/conf/nginx.conf |grep worker_rlimit_nofile
worker_rlimit_nofile 10200;

这个地方设置的,如果我们有需要修改,那么可以修改这里,这不是本篇的重点,对于运行中的进程如何修改呢。

在线修改进程的 limit

这里调用的是 prlimit 进行的在线修改
查询指定进程的限制

$prlimit --pid 5648
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               10200     10200
NPROC      max number of processes                 3819      3819
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           3819      3819
STACK      max stack size                       8388608 unlimited 字节

修改指定运行进程的限制

[root@lab8106 ~]# prlimit --pid 5648 --nofile=65535
[root@lab8106 ~]# prlimit --pid 5648 |grep NOFILE
NOFILE     max number of open files              65535    65535

可以看到修改成功了。

总结

一般来说 ulimit 这个限制都是在终端上修改对下次生效,本篇用来记录如何在线修改,如果碰到了,可以这样处理。


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明利用prlimit动态修改应用进程的最大文件打开数
喜欢 (0)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!永远不要忘记,激情的奋进,就是美好的未来!

您必须 登录 才能发表评论!