通过克服&#34来提高Rabbitmq的吞吐量;吞吐量和CPU利用率可能会恶化"警告

时间:2016-01-01 11:59:02

标签: rabbitmq rabbitmq-exchange

我在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。

谢谢,

1 个答案:

答案 0 :(得分:1)

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

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

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

仅供参考,我filed an issue因此我们不会在Windows上记录此警告。