如何增加Ubuntu中Neo4j的最大文件打开限制(ulimit)?


78

目前ulimit -n显示10000。我想将其增加到40000。我已经编辑了“ /etc/sysctl.conf”并放入了fs.file-max=40000。我还编辑/etc/security/limits.conf和更新了硬值和软值。但是ulimit仍然显示10000。完成所有这些更改后,我重新启动了笔记本电脑。我可以访问root密码。

usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000

/etc/security/limits.conf-中添加了以下几行

*     soft    nofile          40000
*     hard    nofile          40000

我还添加了以下内容/etc/pam.d/su-

session    required   pam_limits.so

我已经尝试了其他论坛上给出的所有可能方式,但是我可以达到的最大限制10000,不能超过此上限。可能是什么问题?

我进行此更改是因为neo4j引发最大打开文件限制达到错误。


您做对了,只需重新启动系统即可正常工作:sudo ulimit -n 40000
0x90

@ 0x90我重新启动了系统。但是即使那样,它也不会改变。
严峻的2014年

6
由于特定于Ubuntu,它实际上可能属于askubuntu.com;一个类似的问题在这里:askubuntu.com/questions/162229/…–
Lambart


添加到/etc/security/limits.conf后,要重新启动哪个服务才能使更改生效?
Ashish Karpe 2015年

Answers:


8

我正在使用Debian,但是此解决方案应该可以在Ubuntu上正常工作。
您必须在neo4j-service脚本中添加一行。
这是我所做的:

nano /etc/init.d/neo4j-servicedo_start部分start-stop-daemon行之前
添加« ulimit –n 40000 »

请注意,我正在使用2.0版企业版。希望这会帮助你。


13
FWIW在Ubuntu Server 14.04上没有这样的脚本。我的解决方案中,这一问题被发现(并lornix的答案):askubuntu.com/questions/162229/... -总之,你需要编辑/etc/security/limits.conf/etc/pam.d/common-session*
Lambart

1
我看到原始提问者顺便提到了neo4j。似乎这是该问题的主题,因为它与Ubuntu没有关系。
Lambart 2014年

在Ubuntu 14.04中,确实存在一个/etc/init.d/neo4j-service文件,MartinLarivière是正确的,插入即可uname -n 40000解决问题。我不知道Ubuntu Server和Ubuntu之间的区别,所以也许您也是对的,我添加这个只是为了阐明Martin撰写的内容解决了普通Ubuntu 14.04的问题。
格雷ç

3
@Lambart,在Neo4j的服务的情况下,common-session-*招行不通,因为Neo4j的服务是基于start-stop-daemonstart-stop-daemon在所有没有利用PAM。实际上,唯一的解决方案是ulimit -n xxx在init脚本中添加显式调用。
David Ammouial,2015年

2
这不是解决方案,这是创可贴。
蒂姆·沃克特

83

您正在执行的操作不适用于root用户。也许您以root用户身份运行服务,因此看不到更改。

要增加root用户的ulimit,您应该用*root代替。*不适用于root用户。休息和你一样。我将在这里重新报价。

将以下行添加到文件中: /etc/security/limits.conf

root soft  nofile 40000

root hard  nofile 40000

然后在文件中添加以下行: /etc/pam.d/common-session

session required pam_limits.so

这将更新root用户的ulimit。如评论中所述,您甚至不必重启即可查看更改。


2
实际上,您无需重新启动即可使新限制生效。编辑/etc/pam.d/common-session文件的目的是,创建任何新的会话都会导致限制文件被处理。
Christopher Smith

1
此过程有效。无需重新启动。只需注销并重新登录即可查看结果。
比尔·巴特勒

2
在使用neo4j-service或任何其他服务的情况下start-stop-daemon,该common-session-*技巧将不起作用,因为start-stop-daemon根本不利用PAM。在ulimit -n xxx启动服务之前,除了在init脚本中的某个地方添加显式调用,没有其他方法。
David Ammouial,2015年

3
在Ubuntu 16.04.1 LTS上工作出色
Andrew T

63

1)检查sysctlfile-max限制:

$ cat /proc/sys/fs/file-max

如果限制低于所需的值,请打开sysctl.conf并在文件末尾添加以下行:

fs.file-max = 65536

最后,应用sysctl限制:

$ sysctl -p 

2)编辑/etc/security/limits.conf并添加以下提到的内容

* soft     nproc          65535    
* hard     nproc          65535   
* soft     nofile         65535   
* hard     nofile         65535

这些限制不适用于root用户,如果要更改root限制,则必须明确地执行以下操作:

root soft     nofile         65535   
root hard     nofile         65535
...

3)重新启动系统或在以下末尾添加以下行/etc/pam.d/common-session

session required pam_limits.so

注销并再次登录。

4)检查软限制:

$ ulimit -a

和硬限制:

$ ulimit -Ha
....

open files                      (-n) 65535

参考:http : //ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html


1
确保您已注销并重新登录,以便可以反映出您的更改;如果您不与root用户一起检查它,那么对于ubuntu,您可以执行以下操作:gnome-session-quit
Mayank Saxena 2015年

/ proc / sys / fs / file-max不是系统允许的最大nofile !!!例如,在我的系统上,默认情况下将其设置为1528702。将其设置为limits.conf中的软限制/硬限制的值时,根本不允许用户将限制从1024开始增加。我必须将limits.conf设置为更保守的值,例如256 * 1024 = 262144,最后ulimit -a对于普通用户也显示相同的内容。
sabujp

3

我遇到了同样的问题,并通过向中添加条目来使其工作/etc/security/limits.d/90-somefile.conf。请注意,为了查看限制,我必须从ssh会话中完全注销,然后重新登录。

我想为运行服务的特定用户设置限制,但似乎我正在获得为登录用户设置的限制。这是一个示例,显示如何根据经过身份验证的用户而非有效用户设置ulimit:

$ sudo cat /etc/security/limits.d/90-nofiles.conf
loginuser    soft    nofile   10240
loginuser    hard    nofile   10240
root         soft    nofile   10241
root         hard    nofile   10241
serviceuser  soft    nofile   10242
serviceuser  hard    nofile   10242

$ whoami
loginuser
$ ulimit -n
10240
$ sudo -i
# ulimit -n
10240    # loginuser's limit
# su - serviceuser
$ ulimit -n
10240    # still loginuser's limit.

您可以使用*来指定所有用户的增长。如果我以登录用户的身份重新启动服务,然后添加ulimit -n到init脚本中,则会看到初始登录用户的限制已到位。我没有机会验证在系统引导过程中使用了哪个用户限制,也没有机会确定我正在运行的服务(以start-stop-daemon启动)的实际nofile限制。

目前有2种方法在起作用:

  1. 在start-stop-daemon之前,向init脚本添加ulimit调整。
  2. 安全文件中的通配符或更广泛的ulimit设置。

当我做您所做的事情(从开始whoami)时,我首先得到1024,然后得到65536(对于root用户),然后得到65536(对于用户)。但是第一个是同一用户。您对此有何解释?我很困惑
Danielson

听起来很奇怪。如何从用户切换到root,然后再切换回user?设置文件后,您是否完全注销了?您可能最初处于缓存的会话中,然后使用新的会话,具体取决于您如何返回用户。
布雷特2015年

为了确定,我一直在重启。还尝试设置/etc/sysctl.conf->fs.file-max = 1000000应该为所有用户全局修复它,也没有结果。就像一个过程无视我。我从user切换到root,如您所述,使用root从root-> user切换到user su - my_user_name。这表示系统知道该用户应使用的内容,但不知道……
Danielson,2015年

2

您可以更改init脚本neo4julimit -n 40000在运行之前执行一个操作neo4j

但是,我忍不住感觉到你在吠错树。是否neo4j合法需要超过10,000个打开文件描述符?这听起来很像是一个错误neo4j或您使用它的方式。我会尝试解决这个问题。


我开始neo4j使用neo4j start。在哪里可以找到它的初始化脚本?
严峻的2014年

尝试ulimit -n 40000在之前输入neo4j start
abligh 2014年

2

我很难让它工作。

使用以下内容,无论用户权限如何,都可以对其进行更新。

sudo sysctl -w fs.inotify.max_user_watches=100000

编辑

刚刚在另一个stackexchange站点上也从另一个用户那里看到了这一点(两种方法都可以,但是这个版本永久性地更新了系统设置,而不是暂时地):

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; 
sudo sysctl -p

2

尝试运行此命令,它将*_limits.conf在下面创建一个文件/etc/security/limits.d

echo "* soft nofile 102400" > /etc/security/limits.d/*_limits.conf && echo "* hard nofile 102400" >> /etc/security/limits.d/*_limits.conf

只需从终端退出并再次登录,然后验证即可ulimit -n为*个用户设置


简单而有用的答案。
sumanth

2

tl; dr设置软限制和硬限制

我确定它能按预期工作,但为了以防万一,请在此处添加它。为了完整起见,在此处设置了限制(请参见下面的语法):/etc/security/limits.conf

some_user       soft    nofile          60000
some_user       hard    nofile          60000

并在/etc/pam.d/common-session中使用以下命令激活:

session required pam_limits.so

如果仅设置硬限制,ulimit -a则将显示默认值(1024):如果仅设置软限制,则ulimit -a将显示(4096)

如果将它们都设置,则两者都ulimit -a将显示软限制(当然达到硬限制)



1

ULIMIT配置:

  1. 通过root登录
  2. vi security / limits.conf
  3. 在下面输入

    网站用户的Ulimit配置开始

    website   soft   nofile    8192
    website   hard   nofile    8192
    website   soft   nproc    4096
    website   hard   nproc    8192
    website   soft   core    unlimited
    website   hard   core    unlimited
    
  4. 在“全部用户”中输入以下内容

    每个用户的Ulimit配置

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. 修改文件后,用户需要注销并再次登录以查看新值。

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.