【LEDE】x86软路由之路-15-关于nr_open、ulimit -n、nofile

nr_open

This denotes the maximum number of file-handles a process can allocate. Default value is 1024*1024 (1048576) which should be enough for most machines. Actual limit depends on RLIMIT_NOFILE resource limit.

  • 如何设置
  1. echo 2097152 > /proc/sys/fs/nr_open
  2. sysctl -w fs.nr_open=2097152

ulimit

主要用来限制普通过shell启动的普通进程的最大文件描述符数量。

  • 如何设置
  1. ulimit -n 2097152

procd中的nofile

用来控制通过procd启动的进程的fd数量

  • 如何设置
  1. procd_set_param limits nofile="2097152 2097152"

优先级

nr_open >= ulimit = nofile
nr_open的默认值为1024*1024,因此如果想把ulimit或nofile提高到一个小于此值的新值时,不需要提高nr_open值;否则需要先提高nr_open的值。

疑问

在procd的源码中,有这样一段代码:
在这里插入图片描述
第179行,如果使用procd_set_param limits nofile="unlimited"来扩大nofile,会使setrlimit方法的rlim参数变得很大,甚至突破nr_open的限制,导致nofile设置失败,回退到1024(soft) 4096(hard)的状态。不知道是自己的操作姿势不对还是源码问题。

发布了86 篇原创文章 · 获赞 21 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/wang805447391/article/details/100558137