1

我在 rabbitmq.config 文件中应用了一些配置,如下所示:

{
[
   %% The following example sets TCP buffers to 192 KiB.
   %% https://www.rabbitmq.com/configure.html#configuration-file
  {rabbit, [
    %% https://www.rabbitmq.com/networking.html
  {tcp_listen_options, [
                        {backlog,   128},
                        {nodelay,   true},
                        {sndbuf,    196608},
                        {recbuf,    196608}
                       ]},
    %% RabbitMQ will block producers when free disk space drops below a certain limit. By default, its value is 50MB
    {disk_free_limit, "1GB"}]}
    ,
  %% disabling Nagle's Algorithm ("nodelay")
  {kernel,
  [ {inet_default_connect_options, [{nodelay, true}]},
    {inet_default_listen_options,  [{nodelay, true}]}
   %% {net_ticktime, 60}
  ]}
].
}

我在“rabbit@nodname.log”文件中收到以下警告消息。

警告消息:内核轮询(epoll、kqueue 等)已禁用。吞吐量和 CPU 利用率可能会恶化。

谁能建议如何增加我的 Rabbitmq 的吞吐量并建议上述警告消息的重要性?

我正在使用最新版本的 Rabbitmq:3.6.0。

谢谢,

4

1 回答 1

1

内核轮询是 Linux、大多数 BSD、Solaris 等几个 Unix 内核提供的功能。它是一个类似于 select(2) 和 poll(2) 的 API,用于监视文件描述符。Erlang 可以利用这个特性。

在那些 Unix 上,RabbitMQ 在启用此功能的情况下启动 Erlang VM,因此您根本不应该收到此警告。

但是,Microsoft Windows 不提供这样的 API,我想您在这个平台上运行 RabbitMQ。在这种情况下,你可以忽略这个警告,Erlang 仍然高效。

仅供参考,我提出了一个问题,因此我们不会在 Windows 上记录此警告。

于 2016-03-18T16:30:47.973 回答