如何设置全局nofile限制以避免“许多打开的文件”错误?

问题描述 投票:27回答:9

我有一个websocket服务。这是具有错误的阶段:“打开的文件太多”,但我已将系统配置为:

/etc/security/limits.conf
*               soft    nofile          65000
*               hard    nofile          65000

/etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65000

ulimit -n
//output 6500

所以我认为我的系统配置正确。

我的服务由上级管理,可能是上级限制吗?

由主管启动检查过程:

cat /proc/815/limits
Max open files            1024                 4096                 files 

检查过程手动开始:

cat /proc/900/limits
Max open files            65000                 65000                 files 

原因是使用主管管理服务。如果我重新启动主管并重新启动子进程,则在重新启动系统主管自动启动时,“最大打开文件数”确定(65000)但错误(1024)。

Supervisor启动级别可能太高并且Supervisor启动时系统配置不起作用吗?

编辑:

系统:ubuntu 12.04 64位

这不是管理员问题,系统重启后所有进程自动启动都不使用系统配置(最大打开文件数= 1024),但是可以重启。

更新

也许问题是:

现在的问题是,如何设置全局nofile限制,因为我不想在我需要的每个新贵脚本中都设置nofile限制。

linux ubuntu linux-kernel upstart
9个回答
9
投票

通过设置文件中所有用户的限制来解决此问题:

$ cat /etc/security/limits.d/custom.conf
* hard nofile 550000
* soft nofile 550000

设置限制后重新启动服务器。

非常重要:/etc/security/limits.d/文件夹包含用户特定的限制。在我的情况下,Hadoop 2(cloudera)相关的限制。这些特定于用户的限制将覆盖全局限制,因此,如果未应用您的限制,请确保检查文件夹/etc/security/limits.d/和文件/etc/security/limits.conf中的特定于用户的限制。

注意:设置用户特定的限制是在所有情况下都可以采用的方法。应避免设置全局(*)限制。就我而言,这是一个孤立的环境,只需要消除实验中的文件限制问题即可。

希望这可以为某人节省一些头发-因为我花了太多时间将头发逐块拉出!


9
投票

我有同样的问题。即使ulimit -Sn显示了我的新限制,但运行proc文件的supervisorctl restart allcat并没有显示新的限制。


5
投票

尝试编辑/ etc / sysctl.conf


5
投票

对任何疲倦的Google员工:您可能正在minfds中寻找the supervisor config设置。此设置似乎对监督过程以及孩子均有效。我还有许多其他策略,包括在执行实际程序之前启动外壳程序脚本来设置限制,但这是唯一有效的方法。


3
投票

您可以找到您的限制:


2
投票

luqmaan的答案是给我的罚单,除了一个小警告:*通配符不适用于Ubuntu的root用户(如limits.conf的评论中所述。


2
投票

您是否可以通过这种方式设置服务限制:


0
投票

暂时可以通过以下命令解决:


-3
投票

我认为这与打开的文件无关(这只是错误的错误消息)。您的应用程序正在使用的任何端口。1.尝试使用命令

© www.soinside.com 2019 - 2024. All rights reserved.