如何在 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抛出最大打开文件限制达到错误。

246506 次浏览

您可以在运行 neo4j之前修改 neo4j的 init 脚本以执行 ulimit -n 40000

然而,我不禁觉得你找错人了。neo4j真的需要超过10,000个打开的文件描述符吗?这听起来很像 neo4j中的 bug 或者你使用它的方式。我会试着解决这个问题。

我正在使用 Debian,但这个解决方案应该与 Ubuntu 工作良好。
您必须在 Ne4j-服务脚本中添加一行。
以下是我所做的:

Nano/etc/init.d/neo4j-service < br/> 在 < strong > do _ start 部分的 开始-停止-守护程序行之前添加“ Ulimit-n 40000

注意,我使用的是2.0版企业版。 希望这个能帮到你。

您所做的对 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。正如注释中提到的,您甚至不需要重新启动就可以看到更改。

1)检查 sysctl 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添加到 init 脚本中,就会看到初始登录用户的限制已经到位。我还没有机会验证在系统引导期间使用了哪些用户限制,也没有机会确定正在运行的服务的实际 nofile 限制是什么(这是以 start-stop-daemon 启动的)。

目前有两种方法可行:

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

我很难让这个起作用。

使用以下命令允许您不管用户权限如何更新它。

sudo sysctl -w fs.inotify.max_user_watches=100000

剪辑

刚刚看到另一个用户也在另一个堆栈交换站点(两个都可以,但这个版本的 永久性的更新系统设置,而不是临时的) :

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

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

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

只需退出终端并再次登录,并通过 ulimit -n验证它将为 * 用户设置

ULIMIT 配置:

  1. 根用户登录
  2. Vi security/limited s.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. Make Below entry for ALL USER

    Ulimit configuration for every user

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. After modifying the file, user need to logoff and login again to see the new values.

同时设置软限制和硬限制

我相信它的工作原理,但我会添加到这里,以防万一。 为了完整起见,这里设置了限制(参见下面的语法) : /etc/security/limited s.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将显示软限制(当然是硬限制)

我是这样做的

echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/