6

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

 3 years ago
source link: http://www.eryajf.net/5008.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本文预计阅读时间 6 分钟

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

查看系统默认的限制

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

默认的打开文件是 1024:

  1. $ ps aux |grep nginx
  2. root 5648 0.0 0.2 46184 2216 ? Ss 15:23 0:00 nginx: master process nginx
  3. www 5709 0.0 0.6 50780 6676 ? S 15:43 0:00 nginx: worker process
  4. root 7044 0.0 0.0 112728 984 pts/1 R+ 17:16 0:00 grep --color=auto nginx
  5. $ cat /proc/5648/limits |grep open
  6. Max open files 10200 10200 files

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

通过配置文件修改

这个参数控制是放在:

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

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

71cfeb93ly1gf8jbf6jjpj20no0zkdly.jpg

在线修改进程的 limit

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

  1. $prlimit --pid 5648
  2. RESOURCE DESCRIPTION SOFT HARD UNITS
  3. AS address space limit unlimited unlimited 字节
  4. CORE max core file size 0 unlimited 块
  5. CPU CPU time unlimited unlimited 秒数
  6. DATA max data size unlimited unlimited 字节
  7. FSIZE max file size unlimited unlimited 块
  8. LOCKS max number of file locks held unlimited unlimited
  9. MEMLOCK max locked-in-memory address space 65536 65536 字节
  10. MSGQUEUE max bytes in POSIX mqueues 819200 819200 字节
  11. NICE max nice prio allowed to raise 0 0
  12. NOFILE max number of open files 10200 10200
  13. NPROC max number of processes 3819 3819
  14. RSS max resident set size unlimited unlimited 页数
  15. RTPRIO max real-time priority 0 0
  16. RTTIME timeout for real-time tasks unlimited unlimited 毫秒数
  17. SIGPENDING max number of pending signals 3819 3819
  18. STACK max stack size 8388608 unlimited 字节

修改指定运行进程的限制

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

可以看到修改成功了。

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


weinxin

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明利用prlimit动态修改应用进程的最大文件打开数

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK