当前位置: 首页>>技术教程>>正文


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

, , , ,

问题描述

当前,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抛出最大打开文件限制达到错误。

最佳办法

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

nano /etc/init.d/neo4j-service
Add « ulimit –n 40000 » just before the start-stop-daemon line in the do_start section

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

次佳办法

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

要增加root用户的ulimit,您应该用root替换**不适用于root用户。休息和你一样。我将在这里re-quote。

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

root soft  nofile 40000

root hard  nofile 40000

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

session required pam_limits.so

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

第三种办法

1)检查系统file-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

第四种办法

我遇到了同样的问题,并通过向/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添加到初始化脚本中,则会看到初始登录用户的限制已到位。我没有机会验证在系统引导过程中使用了哪些用户限制,或者没有确定我正在运行的服务(以start-stop-daemon开始)的实际无文件限制。

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

  1. 在start-stop-daemon之前,在初始化脚本中添加ulimit调整。

  2. 安全文件中的通配符或更广泛的ulimit设置。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7810.html,未经允许,请勿转载。