如何增加Ubuntu 18.04的最大打开文件限制?


16

我已经运行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)。

我想念什么?

Answers:


12

从手册中:

 -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。

DanielFernández的评论

DefaultLimitNOFILE=65536 

可能还需要

/etc/systemd/user.conf 

1
忘了提,我也做到了。
Alix Axel

1
@AlixAxel:除了* - nofile 16384(我只尝试16384)中的方法,此答案对我也有用/etc/security/limits.conf
Doug Smythies '18

65k是一个假设,可以预料到允许的上限存在硬编码限制。您可能要按照Doug的指示从较低位置开始;)
Rinzwind

“这也仅适用于图形用户设置”是什么意思?
锡南

1
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/

如您所见,它已经很老了,但是对我有用。

这是我所做的。

  1. 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
  2. 检查我当前的限制

ubuntu @ isdb-stage:〜$ ulimit -a
核心文件大小(块,-c)0
数据段大小(千字节,-d)无限制
调度优先级(-e)0
文件大小(块,-f)无限
待处理信号(-i)7873
最大锁定内存(千字节,-l)16384
最大内存大小(千字节,-m)无限制
打开文件(-n)1024
管道大小(512字节,-p)8
POSIX消息队列(字节,-q)819200
实时优先级(-r)0
堆栈大小(KB,-s)8192
cpu时间(秒,-t)无限制
最大用户进程(-u)7873
虚拟内存(千字节,-v)无限
文件锁(-x)无限
  1. 记下需要更改的内容

    • 锁定在内存中的大小,需要设置为无限制。
    • 打开文件,需要设置为64000
    • 进程/线程*,需要设置为64000
  2. 对于如何更改这些限制,ubuntu怎么说?

$ manlimits.conf

名称
   limits.conf-pam_limits模块的配置文件

描述
   pam_limits.so模块将ulimit限制,良好的优先级和同时登录会话数限制应用于用户登录会话。此配置文件语法说明适用于

       /etc/security/limits.conf文件和* .conf文件 
       /etc/security/limits.d目录。
  1. 似乎已经足够清楚了,编辑/etc/security/limits.conf文件。好吧,让我们找出答案...。

这是该文件的开始,当然它甚至包含说明,请记住,这是好人写的开源代码!:)

    vi /etc/security/limits.conf

    #/etc/security/limits.conf 
    #每行以以下形式描述对用户的限制:                                                                   
    #                                                                                
    #哪里:                                                               
    # 可:
    #-用户名

(如果需要更多详细信息,请自己查看文件)
  1. 最后进行更改。由于MongoDb以mongodb组和用户身份运行,因此最好提高用户限制。我已经在此处看到“ *”,这对我来说是安全隐患。它为服务器上的所有杂物提供了这些限制,这些限制可用于最大程度地发挥服务器的性能。因此,让它们仅适用于mongodb用户。

这是我的更改:-

mongodb软内存锁无限
mongodb硬memlock无限
mongodb软nofile 64000
mongodb硬nofile 64000
mongodb软nproc 64000
mongodb硬nproc 64000
  1. 最后,最后,请记住在人limits.conf条目中。

    limits.conf-pam_limits模块的配置文件

    最好确保已加载pam_limits模块,以便所有这些限制条件起作用。为此,您可以编辑/etc/pam.d/common-session。当然,这也在手册页中。

须藤vi /etc/pam.d/common-session

#添加此内容以确保已加载pam_limits.so。
所需的会话pam_limits.so

重新启动将显示已应用限制(对于用户mongodb)。如果您改用'*'来应用它们,则可以检查而不必切换到mongodb用户。只需执行此命令。

$ ulimit -a

核心文件大小(块,-c)0
数据段大小(千字节,-d)无限制
调度优先级(-e)0
文件大小(块,-f)无限
待处理信号(-i)7873
最大锁定内存(千字节,-l)无限制
最大内存大小(千字节,-m)无限制
打开文件(-n)64000
管道大小(512字节,-p)8
POSIX消息队列(字节,-q)819200
实时优先级(-r)0
堆栈大小(KB,-s)8192
cpu时间(秒,-t)无限制
最大用户进程(-u)64000
虚拟内存(千字节,-v)无限
文件锁(-x)无限

如您所见,轻松愉快地将所有设置为我们想要的极限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.