Flood example
This example allows to estimate the performance of a Beekeper setup, which depends heavily of the performance of the message broker and the network latency.
To run this example start a worker pool of TestWorker processes:
cd beekeper/examples/flood
source setup.sh
./run.sh
Then flood the worker pool with requests:
./flood.pl -b
Monitor the worker pool load:
bkpr-top
When done, stop the worker pool with:
./run.sh stop
Sample output running on a local RabbitMQ:
# flood -b
1000 notifications of 0 Kb in 0.057 sec 17673 /sec 0.06 ms each
1000 notifications of 1 Kb in 0.071 sec 13990 /sec 0.07 ms each
1000 notifications of 5 Kb in 0.084 sec 11850 /sec 0.08 ms each
1000 notifications of 10 Kb in 0.099 sec 10117 /sec 0.10 ms each
1000 sync jobs of 0 Kb in 1.533 sec 652 /sec 1.53 ms each
1000 sync jobs of 1 Kb in 1.542 sec 649 /sec 1.54 ms each
1000 sync jobs of 5 Kb in 1.692 sec 591 /sec 1.69 ms each
1000 sync jobs of 10 Kb in 1.920 sec 521 /sec 1.92 ms each
1000 async jobs of 0 Kb in 0.403 sec 2480 /sec 0.40 ms each
1000 async jobs of 1 Kb in 0.424 sec 2357 /sec 0.42 ms each
1000 async jobs of 5 Kb in 0.445 sec 2246 /sec 0.45 ms each
1000 async jobs of 10 Kb in 0.473 sec 2115 /sec 0.47 ms each
1000 background jobs of 0 Kb in 0.161 sec 6198 /sec 0.16 ms each
1000 background jobs of 1 Kb in 0.172 sec 5829 /sec 0.17 ms each
1000 background jobs of 5 Kb in 0.193 sec 5173 /sec 0.19 ms each
1000 background jobs of 10 Kb in 0.279 sec 3586 /sec 0.28 ms each
Sample output running a ToyBroker:
# flood -b
1000 notifications of 0 Kb in 0.044 sec 22899 /sec 0.04 ms each
1000 notifications of 1 Kb in 0.065 sec 15456 /sec 0.06 ms each
1000 notifications of 5 Kb in 0.073 sec 13717 /sec 0.07 ms each
1000 notifications of 10 Kb in 0.092 sec 10924 /sec 0.09 ms each
1000 sync jobs of 0 Kb in 0.829 sec 1206 /sec 0.83 ms each
1000 sync jobs of 1 Kb in 0.987 sec 1013 /sec 0.99 ms each
1000 sync jobs of 5 Kb in 1.071 sec 934 /sec 1.07 ms each
1000 sync jobs of 10 Kb in 1.136 sec 880 /sec 1.14 ms each
1000 async jobs of 0 Kb in 0.253 sec 3960 /sec 0.25 ms each
1000 async jobs of 1 Kb in 0.267 sec 3750 /sec 0.27 ms each
1000 async jobs of 5 Kb in 0.284 sec 3525 /sec 0.28 ms each
1000 async jobs of 10 Kb in 0.336 sec 2975 /sec 0.34 ms each
1000 background jobs of 0 Kb in 0.065 sec 15472 /sec 0.06 ms each
1000 background jobs of 1 Kb in 0.068 sec 14602 /sec 0.07 ms each
1000 background jobs of 5 Kb in 0.080 sec 12462 /sec 0.08 ms each
1000 background jobs of 10 Kb in 0.099 sec 10082 /sec 0.10 ms each
RabbitMQ setup
This example uses the internal ToyBroker to allow being run out of the box.
To run this example using RabbitMQ set use_toybroker to false in config files, and configure RabbitMQ (enable STOMP, add an user test and a virtual host /test) with the following commands:
rabbitmq-plugins enable rabbitmq_stomp
rabbitmqctl add_user test abc123
rabbitmqctl add_vhost /test
rabbitmqctl set_permissions test -p /test ".*" ".*" ".*"
rabbitmqctl set_policy expiry -p /test ".*" '{"expires":60000}' --apply-to queues
Also ensure that host address in bus.config.json match RabbitMQ one.