自学内容网 自学内容网

ubuntu 22.04 如何调整进程启动后能打开的文件数限制

在 Ubuntu 22.04 中,可以通过修改系统配置来调整进程启动后能够打开的文件数软限制。软限制是指操作系统允许单个进程打开的文件描述符的最大数量。以下是调整该限制的方法:

1. 查看当前限制

首先,你可以通过 ulimit 命令查看当前的软限制和硬限制:

ulimit -n

这个命令会返回当前进程可以打开的最大文件数(软限制)。

2. 临时调整(仅对当前会话有效)

你可以使用 ulimit 命令来临时调整当前 shell 会话中的文件打开限制:

ulimit -n 65535

这将把软限制设置为 65535。请注意,这个限制仅在当前终端会话中有效,退出会话后会恢复默认设置。

3. 永久调整

要永久修改文件打开限制,需要修改系统配置文件,确保新的设置在每次系统启动时生效。

(a) 修改 /etc/security/limits.conf

编辑 /etc/security/limits.conf 文件,设置适当的软限制和硬限制。打开该文件进行编辑:

sudo nano /etc/security/limits.conf

然后添加如下行:

root soft nofile 65535
root hard nofile 65535

这将设置root用户的软限制和硬限制都为 65535。

注意
1)我尝试了 * soft nofile 65535,本来想设置所有用户,但没有成功。
2)如果是nginx,则需要添加(nginx是以nginx启动的)
nginx soft nofile 65535
nginx hard nofile 65535

(b) 修改 /etc/pam.d/common-session/etc/pam.d/common-session-noninteractive

确保 PAM(可插拔认证模块)能够应用这些限制。编辑以下文件:

sudo nano /etc/pam.d/common-session

在文件的末尾添加以下行:

session required pam_limits.so

这将确保 PAM 模块在会话启动时加载限制配置。

© 修改 /etc/sysctl.conf (可选)

有时候,内核级别的限制可能会影响文件描述符的上限。如果需要,你还可以调整内核参数:

sudo nano /etc/sysctl.conf

添加以下行:

fs.file-max = 1000000

然后应用更改:

sudo sysctl -p

4. 重启系统

为了确保所有更改生效,最好重启计算机或重新登录。

5. 验证

重启后,可以使用以下命令验证设置是否成功:

ulimit -n

或者查看系统级别的文件描述符限制:

cat /proc/sys/fs/file-max

这样,你就可以根据需要调整 Ubuntu 22.04 中进程的文件打开数软限制了。

6. 对于 systemd 启动的服务

如果你的进程是通过 systemd 启动的(例如作为服务或后台进程),limits.conf 配置也可能不会直接生效。这是因为 systemd 管理的进程有自己的资源限制机制。

  • 要为 systemd 管理的服务设置文件描述符限制,你需要编辑相应服务的配置文件(如 /etc/systemd/system/your-service.service),并在 [Service] 部分中设置 LimitNOFILE

    [Service]
    LimitNOFILE=65535
    

    然后重新加载 systemd 配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart your-service
    

如何判定某个进程的文件数打开限制:
cat /proc/$(pgrep nginx | head -n 1)/limits | grep ‘Max open files’


原文地址:https://blog.csdn.net/weilaozongge/article/details/143568458

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!