第七周作业

发布于: 2020 年 07 月 18 日

用熟悉的语言写一个web性能压测工具,输入url,请求总数,并发数,输出结果:平均响应时间、tp95,用这个工具分别以10、100次请求请求百度。

package main
import (
"flag"
"fmt"
"net/http"
"os"
"sort"
"strconv"
"time"
)
func main() {
fmt.Println("命令行参数数量:", len(os.Args))
flag.Parse()
url := flag.Arg(0)
if url == "" {
url = "http://www.jd.com"
}
var concurrent int
if flag.Arg(1) == "" {
concurrent = 10
} else {
concurrent, _ = strconv.Atoi(flag.Arg(1))
}
var requestCount = 100
if flag.Arg(2) != "" {
requestCount, _ = strconv.Atoi(flag.Arg(2))
}
c := make(chan int, concurrent)
r := make(chan int, requestCount)
for i := 0; i < concurrent; i++ {
c <- 1
}
for i := 0; i < requestCount; i++ {
go func() {
<-c
b := time.Now()
http.Get(url)
e := time.Now()
c <- 1
r <- int(e.Sub(b).Milliseconds())
}()
}
times := make([]int, 0)
sum := 0
for len(times) < requestCount {
t := <-r
//fmt.Println(t)
sum += t
times = append(times, t)
}
sort.Sort(sort.IntSlice(times))
fmt.Println(fmt.Sprintf("avg:%d", sum/requestCount))
fmt.Println(fmt.Sprintf("tp95:%d", times[95]))
}

用户头像

秦宝齐

关注

还未添加个人签名 2020.03.26 加入

还未添加个人简介

评论

发布
暂无评论
第七周作业