我已经运行ulimit -n 65536
,并将以下几行添加到/etc/security/limits.conf
:
* soft nofile 65536
* hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536
并添加session required pam_limits.so
:
- /etc/pam.d/common-session
- /etc/pam.d/common-session-noninteractive
并fs.file-max = 65536
。/etc/sysctl.d/60-file-max.conf
但是,重新启动并运行ulimit -n
会话后,我只得到 4096(之前是 1024)。
我错过了什么?
答案1
来自手册:
-n The maximum number of open file descriptors (most
systems do not allow this value to be set)
systemd
有一个选项:
$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=
但这也仅适用于图形用户设置。删除#
,您可以将其设置为 65536。
DefaultLimitNOFILE=65536
可能还需要
/etc/systemd/user.conf
答案2
Ubuntu 18.04 一步步指南
希望这些能对你有帮助,虽然很长但确实有效(有证据)
我在 Ubuntu 18.04 上安装 MongoDb 时遇到了这个帖子
https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/
正如你所见,它已经很旧了,但对我来说还是有用的。
这是我所做的。
MongoDb 推荐设置 (https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits)
- -f(文件大小):无限制
- -t(CPU 时间):无限制
- -v(虚拟内存):无限制[1]
- -l(锁定内存大小):无限制
- -n(打开文件):64000
- -m(内存大小):无限制 [1] [2]
- -u(进程/线程):64000
检查我当前的限制
ubuntu@isdb-stage:~$ ulimit -a 核心文件大小(块,-c) 0 数据段大小(千字节,-d)无限制 调度优先级 (-e) 0 文件大小(块,-f)无限制 待处理信号 (-i) 7873 最大锁定内存 (kbytes, -l) 16384 最大内存大小(kbytes,-m)无限制 打开文件(-n)1024 管道大小(512 字节,-p)8 POSIX 消息队列(字节,-q)819200 实时优先级 (-r) 0 堆栈大小(kbytes,-s)8192 CPU 时间(秒,-t)无限制 最大用户进程数 (-u) 7873 虚拟内存(kbytes,-v)无限制 文件锁 (-x) 无限制
记下需要更改的内容
- 锁定内存大小,需设置为无限制。
- 打开文件,需要设置为 64000
- 进程/线程*,需要设置为 64000
ubuntu 对于如何改变这些限制有何看法?
$ man limits.conf 姓名 limits.conf - pam_limits 模块的配置文件 描述 pam_limits.so 模块将 ulimit 限制、nice 优先级和同时登录会话数限制应用于用户登录会话。此配置文件语法描述适用于 /etc/security/limits.conf 文件和 *.conf 文件 /etc/security/limits.d 目录。
- 看起来已经够清楚了,编辑 /etc/security/limits.conf 文件。好吧,让我们弄清楚……
这是该文件的开头,看,它里面当然还有说明,记住这是开源好人写的!:)
vi /etc/security/limits.conf #/etc/security/limits.conf #每行以如下形式描述一个用户的限制: # #在哪里: # 可: #-用户名 (如需了解更多详细信息,请自行查看文件)
- 最后进行更改。由于 MongoDb 以 mongodb 组和用户身份运行,因此最好仅提高用户限制。我见过到处使用“*”,对我来说,这是一种安全风险。它为服务器上的所有人提供了这些限制,可用于最大化您的服务器。因此,让我们将它们仅用于 mongodb 用户。
以下是我的改动:-
mongodb 软 memlock 无限 mongodb 硬 memlock 无限 mongodb 软 nofile 64000 mongodb 硬盘 nofile 64000 mongodb 软 nproc 64000 mongodb 硬盘 nproc 64000
最后,最后,记住 man limits.conf 条目中的这一点。
limits.conf - pam_limits 模块的配置文件
最好确保已加载 pam_limits 模块,以便所有这些限制都能正常工作。为此,您可以编辑 /etc/pam.d/common-session。当然,这也在手册页中。
sudo vi /etc/pam.d/common-session # 添加此项以确保 pam_limits.so 已加载。 会话需要 pam_limits.so
重新启动将显示已应用限制(针对用户 mongodb)。如果您使用“*”应用它们,则无需切换到 mongodb 用户即可进行检查。只需执行此命令即可。
$ ulimit -a 核心文件大小(块,-c) 0 数据段大小(千字节,-d)无限制 调度优先级 (-e) 0 文件大小(块,-f)无限制 待处理信号 (-i) 7873 最大锁定内存(kbytes,-l)无限制 最大内存大小(kbytes,-m)无限制 打开文件(-n)64000 管道大小(512 字节,-p)8 POSIX 消息队列(字节,-q)819200 实时优先级 (-r) 0 堆栈大小(kbytes,-s)8192 CPU 时间(秒,-t)无限制 最大用户进程数 (-u) 64000 虚拟内存(kbytes,-v)无限制 文件锁 (-x) 无限制
正如你所见,lubbly jubbly 已经全部设置到了我们想要的限制。
答案3
我在 Ubuntu 20.04 上遇到了同样的问题。
唯一需要更改的文件是/etc/security/limits.conf
。将以下行附加* - nofile 100000
到该文件并重新登录即可:
$ ulimit -Sn
100000