diff --git a/stress/curl/.gitignore b/stress/curl/.gitignore deleted file mode 100644 index f935021a8..000000000 --- a/stress/curl/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!.gitignore diff --git a/stress/curl/test.chrome.curl.txt b/stress/curl/test.chrome.curl.txt deleted file mode 100644 index 9f539729a..000000000 --- a/stress/curl/test.chrome.curl.txt +++ /dev/null @@ -1,11 +0,0 @@ -curl 'https://www.baidu.com/sugrec?prod=pc_his&from=pc_web&json=1&sid=1464_21098_31424_31341_31464_31229_30823_31163_31475&hisdata=&req=2&csor=0' \ - -H 'Connection: keep-alive' \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36' \ - -H 'Sec-Fetch-Site: same-origin' \ - -H 'Sec-Fetch-Mode: cors' \ - -H 'Sec-Fetch-Dest: empty' \ - -H 'Referer: https://www.baidu.com/' \ - -H 'Accept-Language: zh-CN,zh;q=0.9' \ - -H 'Cookie: BIDUPSID=A2CDAA36D74F85E5007CAA415E35B9DF; PSTM=1588732560; BAIDUID=A2CDAA36D74F85E59E4B8060EC4A0230:FG=1; BD_HOME=1; BD_UPN=123253; H_PS_PSSID=1464_21098_31424_31341_31464_31229_30823_31163_31475' \ - --compressed \ No newline at end of file diff --git a/stress/curl/test.curl.txt b/stress/curl/test.curl.txt deleted file mode 100644 index 9f539729a..000000000 --- a/stress/curl/test.curl.txt +++ /dev/null @@ -1,11 +0,0 @@ -curl 'https://www.baidu.com/sugrec?prod=pc_his&from=pc_web&json=1&sid=1464_21098_31424_31341_31464_31229_30823_31163_31475&hisdata=&req=2&csor=0' \ - -H 'Connection: keep-alive' \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36' \ - -H 'Sec-Fetch-Site: same-origin' \ - -H 'Sec-Fetch-Mode: cors' \ - -H 'Sec-Fetch-Dest: empty' \ - -H 'Referer: https://www.baidu.com/' \ - -H 'Accept-Language: zh-CN,zh;q=0.9' \ - -H 'Cookie: BIDUPSID=A2CDAA36D74F85E5007CAA415E35B9DF; PSTM=1588732560; BAIDUID=A2CDAA36D74F85E59E4B8060EC4A0230:FG=1; BD_HOME=1; BD_UPN=123253; H_PS_PSSID=1464_21098_31424_31341_31464_31229_30823_31163_31475' \ - --compressed \ No newline at end of file diff --git a/stress/curl/test.post.curl.txt b/stress/curl/test.post.curl.txt deleted file mode 100644 index 63f8c3b57..000000000 --- a/stress/curl/test.post.curl.txt +++ /dev/null @@ -1,14 +0,0 @@ -curl 'https://page.aliyun.com/delivery/plan/list' \ - -H 'authority: page.aliyun.com' \ - -H 'accept: application/json, text/plain, */*' \ - -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36' \ - -H 'content-type: application/x-www-form-urlencoded' \ - -H 'origin: https://cn.aliyun.com' \ - -H 'sec-fetch-site: same-site' \ - -H 'sec-fetch-mode: cors' \ - -H 'sec-fetch-dest: empty' \ - -H 'referer: https://cn.aliyun.com/' \ - -H 'accept-language: zh-CN,zh;q=0.9' \ - -H 'cookie: aliyun_choice=CN; JSESSIONID=J8866281-CKCFJ4BUZ7GDO9V89YBW1-KJ3J5V9K-GYUW7; maliyun_temporary_console0=1AbLByOMHeZe3G41KYd5WWZvrM%2BGErkaLcWfBbgveKA9ifboArprPASvFUUfhwHtt44qsDwVqMk8Wkdr1F5LccYk2mPCZJiXb0q%2Bllj5u3SQGQurtyPqnG489y%2FkoA%2FEvOwsXJTvXTFQPK%2BGJD4FJg%3D%3D; cna=L3Q5F8cHDGgCAXL3r8fEZtdU; isg=BFNThsmSCcgX-sUcc5Jo2s2T4tF9COfKYi8g9wVwr3KphHMmjdh3GrHFvPTqJD_C; l=eBaceXLnQGBjstRJBOfwPurza77OSIRAguPzaNbMiT5POw1B5WAlWZbqyNY6C3GVh6lwR37EODnaBeYBc3K-nxvOu9eFfGMmn' \ - --data 'adPlanQueryParam=%7B%22adZone%22%3A%7B%22positionList%22%3A%5B%7B%22positionId%22%3A83%7D%5D%7D%2C%22requestId%22%3A%2217958651-f205-44c7-ad5d-f8af92a6217a%22%7D' \ - --compressed \ No newline at end of file diff --git a/stress/curl/test.postman.curl.txt b/stress/curl/test.postman.curl.txt deleted file mode 100644 index ad81434be..000000000 --- a/stress/curl/test.postman.curl.txt +++ /dev/null @@ -1,4 +0,0 @@ -curl -X GET \ - 'https://www.baidu.com/sugrec?prod=pc_his&from=pc_web&json=1&sid=1464_21098_31424_31341_31464_31229_30823_31163_31475&hisdata=&req=2&csor=0' \ - -H 'Postman-Token: c9b71950-61fd-43be-a38a-6596de238f0f' \ - -H 'cache-control: no-cache' \ No newline at end of file diff --git a/stress/server/client/http_longclinet/long_clinet.go b/stress/server/client/http_longclinet/long_clinet.go deleted file mode 100644 index 4ea12558a..000000000 --- a/stress/server/client/http_longclinet/long_clinet.go +++ /dev/null @@ -1,59 +0,0 @@ -package httplongclinet - -import ( - "crypto/tls" - "net" - "net/http" - "sync" - "time" - - "go_dreamfactory/stress/model" -) - -var ( - mutex sync.RWMutex - clients = make(map[uint64]*http.Client, 0) -) - -// NewClient new -func NewClient(i uint64, request *model.Request) *http.Client { - client := getClient(i) - if client != nil { - return client - } - return setClient(i, request) -} - -func getClient(i uint64) *http.Client { - mutex.RLock() - defer mutex.RUnlock() - return clients[i] -} - -func setClient(i uint64, request *model.Request) *http.Client { - mutex.Lock() - defer mutex.Unlock() - client := createLangHttpClient(request) - clients[i] = client - return client -} - -// createLangHttpClient 初始化长连接客户端参数 -func createLangHttpClient(request *model.Request) *http.Client { - tr := &http.Transport{} - - tr = &http.Transport{ - DialContext: (&net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 30 * time.Second, - }).DialContext, - MaxIdleConns: 0, // 最大连接数,默认0无穷大 - MaxIdleConnsPerHost: request.MaxCon, // 对每个host的最大连接数量(MaxIdleConnsPerHost<=MaxIdleConns) - IdleConnTimeout: 90 * time.Second, // 多长时间未使用自动关闭连接 - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - - return &http.Client{ - Transport: tr, - } -} diff --git a/stress/server/dispose.go b/stress/server/dispose.go index 97135710a..7fba30662 100644 --- a/stress/server/dispose.go +++ b/stress/server/dispose.go @@ -17,7 +17,7 @@ import ( ) const ( - connectionMode = 1 // 1:顺序建立长链接 2:并发建立长链接 + connectionMode = 2 // 1:顺序建立长链接 2:并发建立长链接 ) // init 注册验证器 @@ -51,7 +51,7 @@ func Dispose(ctx context.Context, concurrency, totalNumber uint64, request *mode case 1: // 连接以后再启动协程 r := robot.NewRobot(request.URL) - r.SetAccount("31112" + strconv.Itoa(int(i))) + r.SetAccount("41112" + strconv.Itoa(int(i))) //head := &pb.UserMessage{MainType: "user", SubType: "login"} // 先登录 @@ -62,7 +62,15 @@ func Dispose(ctx context.Context, concurrency, totalNumber uint64, request *mode case 2: // 并发建立长链接 go func(i uint64) { - // 连接以后再启动协程 + r := robot.NewRobot(request.URL) + r.SetAccount("61112" + strconv.Itoa(int(i))) + //head := &pb.UserMessage{MainType: "user", SubType: "login"} + + // 先登录 + //r.SendToClient(head, &pb.UserLoginReq{}) + //r.AddGrormetItem() + //r.Create() + go golink.WebSocket(ctx, i, ch, totalNumber, &wg, request, r) }(i) // 注意:时间间隔太短会出现连接失败的报错 默认连接时长:20毫秒(公网连接) time.Sleep(5 * time.Millisecond) diff --git a/stress/stress.go b/stress/stress.go index c3fd941d2..113fa6e0a 100644 --- a/stress/stress.go +++ b/stress/stress.go @@ -34,10 +34,7 @@ var ( totalNumber uint64 = 1 // 请求数(单个并发/协程) debugStr = "false" // 是否是debug requestURL = "" // 压测的url 目前支持,http/https ws/wss - path = "" // curl文件路径 http接口压测,自定义参数设置 verify = "pb" // verify 验证方法 在server/verify中 http 支持:statusCode、json webSocket支持:json - headers array // 自定义头信息传递给服务器 - body = "" // HTTP POST方式传送数据 maxCon = 1 // 单个连接最大请求数 code = 200 // 成功状态码 keepalive = false // 是否开启长连接 @@ -50,10 +47,7 @@ func init() { flag.Uint64Var(&totalNumber, "n", totalNumber, "请求数(单个并发/协程)") flag.StringVar(&debugStr, "d", debugStr, "调试模式") flag.StringVar(&requestURL, "u", requestURL, "压测地址") - flag.StringVar(&path, "p", path, "curl文件路径") flag.StringVar(&verify, "v", verify, "验证方法 http 支持:statusCode、json webSocket支持:json") - flag.Var(&headers, "H", "自定义头信息传递给服务器 示例:-H 'Content-Type: application/json'") - flag.StringVar(&body, "data", body, "HTTP POST方式传送数据") flag.IntVar(&maxCon, "m", maxCon, "单个host最大连接数") flag.IntVar(&code, "code", code, "请求成功的状态码") flag.BoolVar(&keepalive, "k", keepalive, "是否开启长连接") @@ -78,11 +72,11 @@ func main() { flag.Parse() statistics.InitLog() - concurrency = 1000 - totalNumber = 1 + concurrency = 100 + totalNumber = 10 debugStr = "false" requestURL = "ws://106.54.189.74:7891/gateway" - if concurrency == 0 || totalNumber == 0 || (requestURL == "" && path == "") { + if concurrency == 0 || totalNumber == 0 || (requestURL == "") { fmt.Printf("示例: go run main.go -c 1 -n 1 -u https://www.baidu.com/ \n") fmt.Printf("压测地址或curl路径必填 \n") fmt.Printf("当前请求参数: -c %d -n %d -d %v -u %s \n", concurrency, totalNumber, debugStr, requestURL)