理解linux和nginx的最大文件描述符,以及worker_rlimit_nofile的
我在nginx上遇到了看似常见的“太多文件描述符”错误.经过大量搜索后,解决方案显然是增加了nginx可用的文件描述符数量.但是没有足够的信息让我觉得以一种有意义和安全的方式做到这一点很舒服.以下是大多数论坛/电子邮件主题涵盖的要点:
>操作系统有自己的总文件描述符限制(在我的系统上,cat / proc / sys / fs / file-max输出“100678”) 我可以输入一个worker_rlimit_nofile值大于每个worker的连接数并且每天调用它,但我觉得我真的不知道这里发生了什么. >为什么每个工人的限制会低于操作系统限制? 更新:对于root用户和普通用户,ulimit输出“unlimited”,但是ulimit -Hn和ulimit -Sn都输出1024 解决方法
worker_rlimit_nofile将为工作进程设置文件描述符的限制,与运行nginx的用户相反.如果在此用户下运行的其他程序无法正常处理文件描述符的用完,那么您应该将此限制设置为略低于用户的限制.
首先,什么是使用您的文件描述符? >与客户端的每个活动连接 为什么每个工人的限制低于操作系统限制? 这由操作系统控制,因为工作人员不是机器上运行的唯一进程.要为运行nginx的用户更改它,请参阅下文.如果您的工作人员用尽了所有进程可用的所有文件描述符,那么这将是非常糟糕的,不要设置限制以便可行. #/etc/sysctl.conf #This sets the value you see when running cat /proc/sys/fs/file-max fs.file-max = 65536" #/etc/security/limits.conf #this sets the defaults for all users * soft nofile 4096 * hard nofile 4096 #This overrides the default for user `usernamehere` usernamehere soft nofile 10240 usernamehere hard nofile 10240 在那些安全限制更改后,我相信我仍然必须使用ulimit增加用户的softlimit. 我如何找出我现在的限制? ulimit -a将显示与您运行它的用户相关的所有限制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |