如何调整物理机下linux的ulimit大小设置?
关于如何调整docker下linux的ulimit大小设置可以查看这篇文章,但如果你是使用的物理机或虚拟机,那么就要使用其他方法了。
对于如何设置 ulimit 值的问题,Red Hat 的这篇文章中有说明,可以按照如下步骤操作
修改配置文件
ulimit 的配置保存在 /etc/security/limits.conf
文件中,该文件的每一行是一个配置项,它的格式如下:
1 | <domain> <type> <item> <value> |
比如要设置 ulimit -l 的值为 unlimited,可以在该文件最后加上如下两行内容
1 | * hard 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 filesrss
- 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 usermaxsyslogins
- max number of logins on the systempriority
- the priority to run user process withlocks
- max number of file locks the user can holdsigpending
- max number of pending signalsmsgqueue
- 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 | ➜ ~ ulimit -a |
可以看到 -l: locked-in-memory size (kbytes) unlimited
这一行内容,说明 ulimit -l 值已经改为 unlimited
了
更多配置说明
要详细了解 limits.conf 的配置信息,可以使用 man limits.conf
命令查看其帮助文档
参考
- 2021-12-06
linux 下
locked-in-memory size
的默认大小通常是64 K
,这对于 io_uring 来说是不够用的。io_uring accounts memory it needs under the rlimit memlocked option, which
can be quite low on some setups (64K). The default is usually enough for
most use cases, but bigger rings or things like registered buffers deplete
it quickly. - 2019-10-19
最近遇到一个 netty 的 OutOfDirectMemoryError 报错,是在分配 direct memory 时内存不足导致的,看了下报错提示,要分配的内存大小为 16M,剩余的空间不足。这里 max direct memory 大约有 7G,于是就有一个疑问,这个值是怎么设置的?