You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When benchmarking a Pub/Sub Systems, we specifically require two distinct roles ( publishers and subscribers ) as benchmark participants - this repo contains code to mimic the subscriber workload on Redis Pub/Sub.
@@ -10,24 +15,40 @@ Several aspects can dictate the overall system performance, like the:
10
15
- Number of subscribers per channel (controlled on subscriber)
11
16
- Subscriber distribution per shard and channel (controlled on subscriber)
12
17
18
+
## Installation
13
19
14
-
##Getting Started
20
+
### Download Standalone binaries ( no Golang needed )
15
21
16
-
### Installing
17
-
This benchmark go program is **know to be supported for go >= 1.11**.
18
-
The easiest way to get and install the Subscriber Go program is to use `go get` and then `go install`:
22
+
If you don't have go on your machine and just want to use the produced binaries you can download the following prebuilt bins:
19
23
20
-
```
21
-
go get github.com/RedisLabs/pubsub-sub-bench
22
-
cd $GOPATH/src/github.com/RedisLabs/pubsub-sub-bench
@@ -40,33 +61,38 @@ Therefore you should only use this tool on go >= 1.11.
40
61
## Usage of pubsub-sub-bench
41
62
42
63
```
43
-
Usage of pubsub-sub-bench:
64
+
Usage of ./pubsub-sub-bench:
65
+
-a string
66
+
Password for Redis Auth.
44
67
-channel-maximum int
45
-
channel ID maximum value ( each channel has a dedicated thread ). (default 100)
68
+
channel ID maximum value ( each channel has a dedicated thread ). (default 100)
46
69
-channel-minimum int
47
-
channel ID minimum value ( each channel has a dedicated thread ). (default 1)
70
+
channel ID minimum value ( each channel has a dedicated thread ). (default 1)
48
71
-client-output-buffer-limit-pubsub string
49
-
Specify client output buffer limits for clients subscribed to at least one pubsub channel or pattern. If the value specified is different that the one present on the DB, this setting will apply.
72
+
Specify client output buffer limits for clients subscribed to at least one pubsub channel or pattern. If the value specified is different that the one present on the DB, this setting will apply.
50
73
-client-update-tick int
51
-
client update tick. (default 1)
74
+
client update tick. (default 1)
52
75
-host string
53
-
redis host. (default "127.0.0.1")
76
+
redis host. (default "127.0.0.1")
54
77
-json-out-file string
55
-
Name of json output file, if not set, will not print to json.
78
+
Name of json output file, if not set, will not print to json.
56
79
-messages int
57
-
Number of total messages per subscriber per channel.
80
+
Number of total messages per subscriber per channel.
58
81
-oss-cluster-api-distribute-subscribers
59
-
read cluster slots and distribute subscribers among them.
82
+
read cluster slots and distribute subscribers among them.
60
83
-port string
61
-
redis port. (default "6379")
84
+
redis port. (default "6379")
62
85
-print-messages
63
-
print messages.
86
+
print messages.
64
87
-subscriber-prefix string
65
-
prefix for subscribing to channel, used in conjunction with key-minimum and key-maximum. (default "channel-")
88
+
prefix for subscribing to channel, used in conjunction with key-minimum and key-maximum. (default "channel-")
66
89
-subscribers-per-channel int
67
-
number of subscribers per channel. (default 1)
90
+
number of subscribers per channel. (default 1)
68
91
-subscribers-placement-per-channel string
69
-
(dense,sparse) dense - Place all subscribers to channel in a specific shard. sparse- spread the subscribers across as many shards possible, in a round-robin manner. (default "dense")
92
+
(dense,sparse) dense - Place all subscribers to channel in a specific shard. sparse- spread the subscribers across as many shards possible, in a round-robin manner. (default "dense")
70
93
-test-time int
71
-
Number of seconds to run the test, after receiving the first message.
94
+
Number of seconds to run the test, after receiving the first message.
95
+
-user string
96
+
Used to send ACL style 'AUTH username pass'. Needs -a.
subscribers_placement:=flag.String("subscribers-placement-per-channel", "dense", "(dense,sparse) dense - Place all subscribers to channel in a specific shard. sparse- spread the subscribers across as many shards possible, in a round-robin manner.")
85
87
channel_minimum:=flag.Int("channel-minimum", 1, "channel ID minimum value ( each channel has a dedicated thread ).")
86
88
channel_maximum:=flag.Int("channel-maximum", 100, "channel ID maximum value ( each channel has a dedicated thread ).")
0 commit comments