Create & Init Project...
This commit is contained in:
109
library/log/benchmark/main.go
Normal file
109
library/log/benchmark/main.go
Normal file
@ -0,0 +1,109 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
_ "net/http/pprof"
|
||||
"os"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"go-common/library/log"
|
||||
xtime "go-common/library/time"
|
||||
)
|
||||
|
||||
var isClient bool
|
||||
|
||||
func init() {
|
||||
os.Setenv("LOG_AGENT", "tcp://127.0.0.1:8080")
|
||||
flag.BoolVar(&isClient, "c", false, "-c=true")
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
flag.Parse()
|
||||
if isClient {
|
||||
go func() {
|
||||
fmt.Println(http.ListenAndServe("localhost:6060", nil))
|
||||
}()
|
||||
log.Init(&log.Config{
|
||||
Stdout: false,
|
||||
Agent: &log.AgentConfig{
|
||||
Proto: "tcp",
|
||||
Addr: "127.0.0.1:8080",
|
||||
Chan: 2048,
|
||||
Buffer: 1,
|
||||
Timeout: xtime.Duration(time.Second),
|
||||
}})
|
||||
for i := 0; i < 3; i++ {
|
||||
go func() {
|
||||
arg := `area:"reply"
|
||||
message:"\345\233\236\345\244\215 @\347\231\276\350\215\211\345\221\263\346\235\245\344\274\212\344\273\275 :\345\223\210\357\274\214\344\275\240\345\260\261\345\217\252\347\234\213\345\210\260\344\272\206pick me up\346\262\241\347\234\213\345\210\260\346\222\236\357\274\237\347\262\211\344\270\235\350\247\243\351\207\212\344\272\206\346\227\240\346\225\260\351\201\215\344\273\245\345\211\215\351\202\243\344\270\252\345\245\263\345\233\242\344\270\200\344\270\252\346\234\210\345\260\261\346\262\241\345\255\246\345\225\245\350\210\236\357\274\214\347\277\273\346\235\245\350\246\206\345\216\273\350\267\263\357\274\214\345\217\202\345\212\240101\347\232\204\346\227\266\345\200\2313\345\244\251\344\270\200\344\270\252\350\210\236\350\277\230\345\234\250\350\277\231\350\257\264\343\200\202\346\234\215\344\272\206"
|
||||
id:1075824609 oid:31813039 mid:76839481 `
|
||||
for {
|
||||
log.Infov(context.Background(),
|
||||
log.KV("user", "test_user"),
|
||||
log.KV("ip", "127.0.0.1:8080"),
|
||||
log.KV("path", "127.0.0.1:8080/test_user"),
|
||||
log.KV("ret", 0),
|
||||
log.KV("args", arg),
|
||||
log.KV("stack", "nil"),
|
||||
log.KV("error", ""),
|
||||
log.KV("ts", time.Second.Seconds()),
|
||||
)
|
||||
}
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Hour)
|
||||
} else {
|
||||
startServer()
|
||||
}
|
||||
}
|
||||
|
||||
func startServer() {
|
||||
go calcuQPS()
|
||||
lis, err := net.Listen("tcp", ":8080")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for {
|
||||
conn, err := lis.Accept()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
go serve(conn)
|
||||
}
|
||||
}
|
||||
|
||||
var total int64
|
||||
|
||||
func calcuQPS() {
|
||||
var lastTotal int64
|
||||
var lastUpdated time.Time
|
||||
for {
|
||||
time.Sleep(time.Second * 3)
|
||||
t := atomic.LoadInt64(&total)
|
||||
n := time.Now()
|
||||
change := t - lastTotal
|
||||
gap := n.Sub(lastUpdated)
|
||||
fmt.Println("bw:", change/(gap.Nanoseconds()/1e7))
|
||||
lastTotal = t
|
||||
lastUpdated = n
|
||||
}
|
||||
}
|
||||
|
||||
func serve(conn net.Conn) {
|
||||
p := make([]byte, 4096)
|
||||
for {
|
||||
nRead, err := conn.Read(p)
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
break
|
||||
}
|
||||
atomic.AddInt64(&total, int64(nRead))
|
||||
}
|
||||
fmt.Println(string(p))
|
||||
}
|
Reference in New Issue
Block a user