问题描述
当前,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种方法在起作用:
-
在start-stop-daemon之前,在初始化脚本中添加ulimit调整。
-
安全文件中的通配符或更广泛的ulimit设置。