如何调整物理机下linux的ulimit大小设置?

关于如何调整docker下linux的ulimit大小设置可以查看这篇文章,但如果你是使用的物理机或虚拟机,那么就要使用其他方法了。

对于如何设置 ulimit 值的问题,Red Hat 的这篇文章中有说明,可以按照如下步骤操作

修改配置文件

ulimit 的配置保存在 /etc/security/limits.conf 文件中,该文件的每一行是一个配置项,它的格式如下:

1
<domain> <type> <item> <value>

比如要设置 ulimit -l 的值为 unlimited,可以在该文件最后加上如下两行内容

1
2
*       hard    memlock         unlimited
* soft memlock unlimited

具体可以设置的 item 项如下

  • core - limits the core file size (KB)
  • data - max data size (KB)
  • fsize - maximum filesize (KB)
  • memlock - max locked-in-memory address space (KB)
  • nofile - max number of open files
  • rss - max resident set size (KB)
  • stack - max stack size (KB)
  • cpu - max CPU time (MIN)
  • nproc - max number of processes (see note below)
  • as - address space limit (KB)
  • maxlogins - max number of logins for this user
  • maxsyslogins - max number of logins on the system
  • priority - the priority to run user process with
  • locks - max number of file locks the user can hold
  • sigpending - max number of pending signals
  • msgqueue - max memory used by POSIX message queues (bytes)
  • nice - max nice priority allowed to raise to values: [-20, 19]
  • rtprio - max realtime priority

退出并重新登录终端

要想使新的配置生效,需要重新登录终端,登录后可以使用 ulimit -a 命令查看配置是否生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
➜  ~ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 14970
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) unlimited
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 14970
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited

可以看到 -l: locked-in-memory size (kbytes) unlimited 这一行内容,说明 ulimit -l 值已经改为 unlimited

更多配置说明

要详细了解 limits.conf 的配置信息,可以使用 man limits.conf 命令查看其帮助文档

参考

How to set ulimit values