Supervisord 修改ulimit 限制。

首发 系统运维
QRI的头像

QRI

这人还不错哦!

在Linux中,默认情况下,非特权用户只能打开1024计算机上的文件。这包括日志文件的句柄,还包括本地套接字,TCP端口等……所有内容都是文件,并且使用受到限制,作为系统保护。

通常,我们可以通过增加系统限制来增加特定用户可以打开的进程数量。这是在中配置的/etc/security/limits.d/。
例如,这允许用户john最多打开10000个文件。

$ cat /etc/security/limits.d/john.conf

john        soft        nofile        10000

您将假设配置后,这将适用于以用户身份运行的所有命令john。las,如果您supervisord用来运行流程,情况并非如此。

以以下supervisor工作为例:

$ cat /etc/supervisord.d/john.ini
[john]
command=/usr/bin/php /path/to/script.php
numprocs=1
autostart=true
autorestart=true
user=john

这将在supervisord中添加一个任务,以始终使该任务/usr/bin/php /path/to/script.php以用户身份运行john,并且如果该任务崩溃或停止,它将自动重新启动它。

但是,如果我们检查对该流程实施的实际限制,则会发现以下内容。

$ cat /proc/19153/limits
Limit                     Soft Limit           Hard Limit           Units
...
Max open files            1024                 4096                 files

尽管该进程可以在我们的limits.d目录中打开的文件数量有所增加,但该进程的软限制为1024个文件,硬限制为4096 。

原因是它supervisord具有自己的设置,minfds用于设置可以打开的文件数量。而且该设置会被所有supervisord生成的子代继承,因此它会覆盖您可能在中设置的任何设置limits.d。

它的默认值设置为1024,可以增加,以便您想要(或需要)任何东西。

$ cat /etc/supervisord.conf 
[supervisord] 
... 
minfds = 1024;
发布于 2020-09-30 11:29:35
阅读:1 0 2020-09-30
文章被以下专栏收录
目录