我设置了其他环境,以增加下游代理的VCPU数量。
downstream broker: 4VCPU, 10.76.6.181
upstream broker: 2VCPU, 10.76.6.215
both have 8G ram, 80G disk.
和一组联合交换,例如:
联盟设置,例如:
rabbitmqctl set_parameter federation-upstream a1 \'{"uri":"amqp:10.76.6.215//"}\'
.
rabbitmqctl set_parameter federation-upstream a10 \'{"uri":"amqp:10.76.6.215//"}\'
我使用10个上游联盟来增加消费者人数。
policy:
rabbitmqctl set_policy --apply-to exchanges animal "animal" \'{"federation-upstream-set":"all"}\'
并使用#./bin/runjava com.rabbitmq.perf.PerfTestMulti p1_spec.js p1_result.js来模拟流。 速度上限为8K,邮件大小为1K, 消费者设置是相似的。
[root@taozou-rabbitmq-4 pt_tool]# more p1_spec.js
[{"name": "publish",
"uri": "amqp://10.76.6.215:5672",
"type": "simple",
"params": [{"time-limit": 86400,
"producer-count": 1,
"consumer-count": 0,
"min-msg-size": 1024,
"exchange-name": "animal",
"routing-key": "",
"predeclared": true,
"producer-rate-limit": 8000,
"auto-ack": true}],
"flag": [{"persistent": false}]
}]
和
#[root@taozou-rabbitmq-4 pt_tool]# more c1_spec.js
[{"name": "consume",
"uri": "amqp://10.76.6.181:5672",
"type": "simple",
"params": [{"time-limit": 86400,
"producer-count": 0,
"consumer-count": 1,
"min-msg-size": 1024,
"queue-names": ["cat"],
"predeclared": true,
"consumer-rate-limit": 8000,
"auto-ack": true}],
"flag": [{"persistent": false}]
}]
运行时,下游代理仅获得了约3K。
下游代理的CPU使用率是:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15498 rabbitmq 20 0 3958984 242280 4460 S 145.5 3.0 83:17.95 beam.smp
18471 rabbitmq 20 0 41504 1268 972 S 18.3 0.0 6:15.41 inet_gethost
15930 rabbitmq 20 0 11588 636 520 S 1.3 0.0 0:42.14 inet_gethost
15649 rabbitmq 20 0 11756 608 304 S 0.0 0.0 0:00.07 epmd
15837 rabbitmq 20 0 4352 532 444 S 0.0 0.0 0:00.17 erl_child_setup
15931 rabbitmq 20 0 41504 1268 968 S 0.0 0.0 3:09.43 inet_gethost
18470 rabbitmq 20 0 41504 1268 972 S 0.0 0.0 1:16.28 inet_gethost
我无法在此处发布图片,但是消费者利用率约为1x〜20%
由于代理具有4VCPU,所以我无法想象为什么速度如此之慢。 用于上游代理CPU的大约为70。这两个节点之间的网络带宽超过100MB。
我想使用Rabbitmq_federation插件在两个群集之间进行备份。但是性能太差了我无法 符合性能要求。 任何建议将不胜感激。