This commit is contained in:
Dmitry Vasilyev 2016-11-14 19:53:48 +03:00
parent 1ece28029c
commit 9d843a62a1
2 changed files with 20 additions and 19 deletions

View File

@ -8,19 +8,15 @@ Run `./generate-template-clients.sh > clients.xml` and upload template with clie
## Run benchmark
```bash
Usage of zabbix-bench:
-client int
number of concurrent clients (default 200)
-client-format string
format of client name (default "client-%d")
-metric-format string
format of metric name in packet (default "metric-%d")
-packet-delay duration
delay of send packet (default 100ms)
-packet-send-timeout duration
packet send timeout (default 10ms)
-packet-size int
count of metric in packet (default 100)
-zabbix string
address of zabbix server (default "127.0.0.1:10051")
make && ./bin/zabbix-bench -zabbix "192.168.1.1:10051" -packet-delay 1ms
go build -o ./bin/zabbix-bench ./src/main.go
Start 200 clients with packet size 100 metric and delay between packets 1ms
progress 1 s, 13100 metric/s
progress 2 s, 15300 metric/s
progress 3 s, 11200 metric/s
progress 4 s, 17500 metric/s
progress 5 s, 13100 metric/s
^C
-----------------------------
Total processed: 70300 (11716 metric/s)
```

View File

@ -43,13 +43,14 @@ func main() {
go StartClient(i)
}
os.Stdout.WriteString(fmt.Sprintf("Start %d clients with packet size %d metric and delay between packets %v\n", *argClientCount, *argPacketSize, *argPacketDelay))
ticker := time.Tick(time.Second)
for {
select {
case <-ticker:
mutex.Lock()
os.Stdout.WriteString(fmt.Sprintf("progress %d s, %d metric/s\n", sec, counter))
sec += 1
os.Stdout.WriteString(fmt.Sprintf("Metric sended: %d\n", counter))
counter = 0
mutex.Unlock()
case count := <-completedChannel:
@ -58,9 +59,13 @@ func main() {
total += count
mutex.Unlock()
case err := <-errorChannel:
os.Stderr.WriteString(fmt.Sprintf("Error write package:\t%s\n", err.Error()))
os.Stderr.WriteString(fmt.Sprintf("Error write metric:\t%s\n", err.Error()))
case <-signalChannel:
os.Stdout.WriteString(fmt.Sprintf("Total: %d (%d metric/s)\n", total, int(total/sec)))
speed := 0
if sec > 0 {
speed = int(total / sec)
}
os.Stdout.WriteString(fmt.Sprintf("\n-----------------------------\nTotal processed: %d (%d metric/s)\n", total, speed))
os.Exit(0)
}
}
@ -79,7 +84,7 @@ func (c *client) send() error {
now := time.Now().Unix()
metrics := make([]*zabbix.Metric, 0)
for i := 0; i < *argPacketSize; i++ {
metrics = append(metrics, zabbix.NewMetric(c.host, fmt.Sprintf(*argMetricName, i), string(i), now))
metrics = append(metrics, zabbix.NewMetric(c.host, fmt.Sprintf(*argMetricName, i), fmt.Sprintf("%d", i), now))
}
return c.sender.Send(zabbix.NewPacket(metrics, now))
}