@@ -2,14 +2,13 @@ package server
2
2
3
3
import (
4
4
"fmt"
5
- "math"
6
5
"sync"
7
6
"time"
8
7
9
8
"github.com/BUGLAN/stress/model"
10
9
)
11
10
12
- func ReceiveData (ch chan * model.ReqResult , wg * sync.WaitGroup ) {
11
+ func ReceiveData (ch chan * model.ReqResult , startTime time. Time , wg * sync.WaitGroup ) {
13
12
defer wg .Done ()
14
13
stopChan := make (chan struct {})
15
14
ticker := time .NewTicker (time .Second * 1 )
@@ -26,17 +25,18 @@ func ReceiveData(ch chan *model.ReqResult, wg *sync.WaitGroup) {
26
25
avgTime float64 // 平均请求耗时
27
26
concurrentNum uint64 // 并发数
28
27
currRequestNum uint64 // 当前请求数
28
+ elapsedTime int // 耗时
29
29
)
30
30
31
31
// 排除minTime为0的情况
32
- minTime = math .MaxFloat64
33
32
34
33
go func () {
35
34
for {
36
35
select {
37
36
case <- ticker .C :
37
+ elapsedTime += 1
38
38
// 定时输出相应的指标
39
- out (totalProcessTime , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime , minTime , avgTime )
39
+ out (elapsedTime , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime , minTime , avgTime )
40
40
case <- stopChan :
41
41
fmt .Println ()
42
42
return
@@ -59,7 +59,9 @@ func ReceiveData(ch chan *model.ReqResult, wg *sync.WaitGroup) {
59
59
// fmt.Printf("minTime %f\n", minTime)
60
60
61
61
// 最小耗时
62
- if data .ProcessTime < minTime {
62
+ if minTime == 0 {
63
+ minTime = data .ProcessTime
64
+ } else if data .ProcessTime < minTime {
63
65
minTime = data .ProcessTime
64
66
}
65
67
@@ -79,7 +81,7 @@ func ReceiveData(ch chan *model.ReqResult, wg *sync.WaitGroup) {
79
81
avgTime = totalProcessTime / float64 (concurrentNum )
80
82
81
83
// qps
82
- qps = 1e9 / avgTime
84
+ qps = float64 ( totalSuccessNum ) / float64 ( elapsedTime )
83
85
84
86
}
85
87
@@ -92,18 +94,18 @@ func ReceiveData(ch chan *model.ReqResult, wg *sync.WaitGroup) {
92
94
_ = concurrentNum
93
95
_ = currRequestNum
94
96
// 最后的输出到控制台 传入
95
- out (totalProcessTime , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime , minTime , avgTime )
97
+ out (elapsedTime , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime , minTime , avgTime )
96
98
97
99
}
98
100
99
101
func tableHeader () {
100
102
fmt .Printf ("\n " )
101
- fmt .Println (" 耗时│ 并发数 │ 成功数│ 失败数│ QPS │最长耗时│最短耗时│平均耗时│ 错误码 " )
102
- fmt .Println ("─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼──────── " )
103
+ fmt .Println (" 耗时│ 请求数 │ 成功数│ 失败数│ QPS │最长耗时│最短耗时│平均耗时" )
104
+ fmt .Println ("─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────" )
103
105
}
104
106
105
107
// out 输出到控制台 单位为纳秒(ns)
106
- func out (totalProcessTime float64 , concurrentNum , totalSuccessNum , totalFailureNum uint64 , qps , maxTime , minTime , avgTime float64 ) {
107
- fmt .Printf ("%4.2fs │%7d│%7d│%7d│%8.2f│%8 .2fs│%8 .2fs│%8 .2fs│错误码 \n " , totalProcessTime / 1e9 , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime / 1e9 , minTime / 1e9 , avgTime / 1e9 )
108
+ func out (elapsedTime int , concurrentNum , totalSuccessNum , totalFailureNum uint64 , qps , maxTime , minTime , avgTime float64 ) {
109
+ fmt .Printf ("%4ds │%7d│%7d│%7d│%8.2f│%7 .2fs│%7 .2fs│%7 .2fs \n " , elapsedTime , concurrentNum , totalSuccessNum , totalFailureNum , qps , maxTime / 1e9 , minTime / 1e9 , avgTime / 1e9 )
108
110
109
111
}
0 commit comments