From 9d843a62a1ed41f9043b314157525a420f4e16cc Mon Sep 17 00:00:00 2001 From: Dmitry Vasilyev Date: Mon, 14 Nov 2016 19:53:48 +0300 Subject: [PATCH] fixes --- README.md | 26 +++++++++++--------------- src/main.go | 13 +++++++++---- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 51ae855..de60140 100644 --- a/README.md +++ b/README.md @@ -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) ``` diff --git a/src/main.go b/src/main.go index 8538f7a..d8a5715 100644 --- a/src/main.go +++ b/src/main.go @@ -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)) }