Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rabbitmq 如何调整套接字描述符?_Rabbitmq - Fatal编程技术网

Rabbitmq 如何调整套接字描述符?

Rabbitmq 如何调整套接字描述符?,rabbitmq,Rabbitmq,我想知道谁来调整套接字描述符的数量 此外,如何在有限的超时时间内自动关闭连接?看起来您必须更改系统中的最大打开文件描述符 来自Debian和Ubuntu系统的RabbitMQ安装手册,第节: 运行生产工作负载的RabbitMQ安装可能需要系统支持 限制和内核参数调整以处理一个合适的数字 并发连接和队列的数量。需要的主要设置 调整是打开文件的最大数量,也称为ulimit-n。 许多操作系统上的默认值对于消息传递来说太低 代理(例如,在几个Linux发行版上为1024)。我们推荐 允许中的用户rab

我想知道谁来调整套接字描述符的数量


此外,如何在有限的超时时间内自动关闭连接?

看起来您必须更改系统中的最大打开文件描述符

来自Debian和Ubuntu系统的RabbitMQ安装手册,第节:

运行生产工作负载的RabbitMQ安装可能需要系统支持 限制和内核参数调整以处理一个合适的数字 并发连接和队列的数量。需要的主要设置 调整是打开文件的最大数量,也称为ulimit-n。 许多操作系统上的默认值对于消息传递来说太低 代理(例如,在几个Linux发行版上为1024)。我们推荐 允许中的用户rabbitmq至少有65536个文件描述符 生产环境。4096对大多数人来说应该足够了 开发工作量

有两个限制:操作系统中打开的文件的最大数量 内核允许(fs.file max)和每用户限制(ulimit-n)。这个 前者必须高于后者

调整RabbitMQ的每用户限制的最简单方法 是编辑/etc/default/rabbitmq服务器(由rabbitmq提供) 或在 服务已启动

ulimit-S-n4096

此软限制不能高于硬限制(默认值) 到4096(在许多发行版中)。通过 /etc/security/limits.conf。这还需要启用 并重新登录或重新启动

请注意,无法更改运行操作系统进程的限制

有关使用sysctl控制fs.file-max的更多信息,请 参考优秀的

附言:


RabbitMQ邮件列表“”中讨论了类似的问题。最后一条消息包含到RabbitMQ安装文档的最后一个链接,并明确指向ulimit问题,但通读它也可能帮助您解决问题,而整个线程从不同的角度涵盖描述符限制问题

您可以在/etc/security/limits.conf中添加以下行

* soft nofile 65000
* hard nofile 65000

使用此选项,您将ulimit设置为65000

我注意到这里的其他答案确实回答了如何提高套接字描述符限制的问题(在
/etc/default/rabbitmq server
中设置
ulimit-n
),但没有一个答案回答您的其他问题(为什么文件描述符限制为1024时设置829个套接字描述符?)


这是由于RabbitMQ正在使用的其他文件句柄的数量。在某种程度上,套接字描述符的数量总是比较少的(根据我自己的使用,大约是文件描述符限制的90-95%)。RabbitMQ的文档建议您将文件描述符限制设置为最大连接数的1.5倍:

我在Ubuntu 16.04上运行RabbitMQ 3.6.3,对于这些更新版本,这里给出的答案(在RabbitMQ服务器文件中使用ulimit)不再适用于我

我的解决方案是在此文件中配置systemd的限制

/etc/systemd/system/rabbitmq-server.service.d/override.conf

在该文件中,放入此配置

[服务]
LimitNOFILE=32768

其中32768是要配置的文件句柄数

如果直接编辑该文件,则需要使用

sudo systemctl后台程序重新加载

但您也可以使用systemctl编辑文件,在这种情况下,它会自动重新加载配置


sudo systemctl edit rabbitmq服务器

在Ubuntu上对我有效的解决方案是:

首先,找到正确的
rabbitmq服务器
文件。您可以通过在bash提示符上运行
locate rabbitmq server
来完成此操作。
然后用sudovim/etc/default/rabbitmq服务器打开文件。它是一个包含行
ulimit-n4096

如果该行用
#
注释掉,请取消对该行的注释。
然后添加
EOF
作为文件的最后一行

该文件现在将显示如下:

# This file is sourced by /etc/init.d/rabbitmq-server. Its primary
# reason for existing is to allow adjustment of system limits for the
# rabbitmq-server process.
#
# Maximum number of open file handles. This will need to be increased
# to handle many simultaneous connections. Refer to the system
# documentation for ulimit (in man bash) for more information.
#
ulimit -n 4096
EOF
现在必须重新启动rabbitmq。但不要重新启动操作系统。
找到您的
rabbitmqctl
文件并运行:
sudo/usr/sbin/rabbitmqctl-stop

然后使用
sudo/usr/sbin/rabbitmqctl start&
再次启动rabbitmq


就这样。现在转到RabbitMQ浏览器UI,您将看到套接字的数量有所增加

你想增加价值吗?你使用心跳吗?我想知道“829限制”是从哪里来的,以及如何调整它。今天晚些时候我会试试心跳。感谢您,请指定您在哪个操作系统上运行RabbitMQ。Linux 10-4-1-4 3.2.0-4-amd64#1 SMP Debian 3.2.41-2 x86_64 GNU/Linux默认套接字描述符的数量这么小有什么原因吗?如果增加到4000,这意味着什么?这是否意味着RabbitMQ将占用更多内存?在处理数据时,循环遍历所有描述符是否需要更多时间?增加价值意味着什么?这对我来说很有效。非常感谢。但让我困惑的是,这种方式和修改
/etc/security/limits.conf
有什么区别?这个问题引用了一个有点过时的文档页面。我刚刚更新了答案:
这个软限制不能高于硬限制(在许多发行版中默认为4096)。硬限制可以通过/etc/security/limits.conf增加。
这是唯一适用于ubuntu 16和rabbitmq 3.6.3I的方法,我可以确认ubuntu 16.04上的systemd服务没有来源于
/etc/default/rabbitmq服务器
文件,因此在其中添加ulimit行不起作用。这个系统的超控工作得很好。谢谢。出于某种原因,我不得不使用
服务重新启动