Skip to content

Instantly share code, notes, and snippets.

@linxGnu
Created July 22, 2018 13:33
Show Gist options
  • Save linxGnu/fdac6a08ac99858e9b8328986718f097 to your computer and use it in GitHub Desktop.
Save linxGnu/fdac6a08ac99858e9b8328986718f097 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"sync"
"time"
"github.com/influxdata/influxdb/client/v2"
)
const (
numberServer = 64
numberRegion = 2 // 1024
factorDegree = 1024 // 128
)
func main() {
start := time.Now()
bench(false)
d := time.Now().Sub(start).Seconds()
t := numberServer * numberRegion * factorDegree
fmt.Printf("%d %.3f %.3f\n", t, d, float64(t)/d)
}
func bench(writeBatch bool) {
c, err := client.NewHTTPClient(client.HTTPConfig{
Addr: "http://127.0.0.1:8086",
})
if err != nil {
log.Fatal(err)
}
defer c.Close()
var wg sync.WaitGroup
for i := 0; i < numberServer; i++ {
wg.Add(1)
go func(serverID int) {
for region := 0; region < numberRegion; region++ {
var batchPoints client.BatchPoints
if writeBatch {
batchPoints, _ = client.NewBatchPoints(client.BatchPointsConfig{
Database: "test",
})
}
for factor := 0; factor < factorDegree; factor++ {
if !writeBatch {
batchPoints, _ = client.NewBatchPoints(client.BatchPointsConfig{
Database: "test",
})
}
p, _ := client.NewPoint("cpu",
map[string]string{"server": fmt.Sprintf("Server%d", serverID), "region": fmt.Sprintf("Region%d", region)},
map[string]interface{}{"value": 1 + serverID*factor*region},
time.Now())
batchPoints.AddPoint(p)
if !writeBatch {
if err := c.Write(batchPoints); err != nil {
fmt.Println(err)
}
}
}
if writeBatch {
if err := c.Write(batchPoints); err != nil {
fmt.Println(err)
}
}
}
wg.Done()
}(i)
}
wg.Wait()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment