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

the*_*est 76 linux ubuntu limit ulimit neo4j

目前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
Run Code Online (Sandbox Code Playgroud)

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

*     soft    nofile          40000
*     hard    nofile          40000
Run Code Online (Sandbox Code Playgroud)

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

session    required   pam_limits.so
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在其他论坛上提供的所有可能的方式,但我可以达到最大限度,但10000不能超过这个限制.可能是什么问题?

我正在进行此更改,因为neo4j抛出最大打开文件限制达到错误.

Sam*_*rma 82

你正在做什么对root用户不起作用.也许你是以root身份运行你的服务,因此你无法看到变化.

要增加root用户的ulimit,您应该替换root用户*.*不适用于root用户.休息和你一样.我会在这里重新引用它.

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

root soft  nofile 40000

root hard  nofile 40000
Run Code Online (Sandbox Code Playgroud)

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

session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)

这将更新root用户的ulimit.如评论中所述,您甚至可能无需重新启动即可查看更改.

  • 对于ubunutu 14.04,它对我没有用 (7认同)
  • 在Ubuntu 16.04.1 LTS上工作得很漂亮 (3认同)
  • 实际上,您无需重新启动以使新限制生效.编辑/etc/pam.d/common-session文件的目的是创建任何新会话将导致限制文件被处理. (2认同)
  • 在使用`start-stop-daemon`的neo4j-service或任何其他服务的情况下,`common-session-*`技巧将不起作用,因为`start-stop-daemon`根本不利用PAM.除了在启动服务之前在init脚本中的某处添加显式的`ulimit -n xxx`调用之外别无他法. (2认同)

min*_*s23 63

1)检查sysctl file-max限制:

$ cat /proc/sys/fs/file-max
Run Code Online (Sandbox Code Playgroud)

如果限制低于您想要的值,请打开sysctl.conf并在文件末尾添加此行:

fs.file-max = 65536
Run Code Online (Sandbox Code Playgroud)

最后,应用sysctl限制:

$ sysctl -p 
Run Code Online (Sandbox Code Playgroud)

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

* soft     nproc          65535    
* hard     nproc          65535   
* soft     nofile         65535   
* hard     nofile         65535
Run Code Online (Sandbox Code Playgroud)

这些限制不适用于root用户,如果您想要更改root必须明确执行的限制:

root soft     nofile         65535   
root hard     nofile         65535
...
Run Code Online (Sandbox Code Playgroud)

3)重启系统或添加以下行到/etc/pam.d/common-session:

session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)

注销并再次登录.

4)检查软限制:

$ ulimit -a
Run Code Online (Sandbox Code Playgroud)

和硬限制:

$ ulimit -Ha
....

open files                      (-n) 65535
Run Code Online (Sandbox Code Playgroud)

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


小智 8

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

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

请注意,我使用的是2.0版企业版.希望这会帮助你.

  • FWIW在Ubuntu Server 14.04上没有这样的脚本.我的解决方案在这个问题(和lornix的答案)中找到:http://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user - 简而言之,你需要编辑`/ etc/security/limits.conf`和`/ etc/pam.d/common-session*` (13认同)
  • @Lambart,在neo4j-service的情况下,`common-session-*`技巧将不起作用,因为neo4j-service基于`start-stop-daemon`和`start-stop-daemon`不完全利用PAM.确实唯一的解决方案是在init脚本中添加一个明确的`ulimit -n xxx`调用. (3认同)
  • 这不是解决方案,这是一个绑带. (2认同)