NetCore HttpClient 踩的坑
这一年的NetCore学习,遇到的大坑都让我变得更强大
性能问题
测试电脑配置:
测试脚本
使用Golang的并发测试
func main() {
for i := 0; i < 5000 ; i++ {
go func(tag int) {
httpGet("https://127.0.0.1:5001/WeatherForecast", "进程[1]编号 - " + fmt.Sprintf("%d", tag))
}(i)
}
for {
time.Sleep( 1 * time.Second)
}
}
var success = 0
func httpGet(url string, tag string) {
s := time.Now().UnixNano()
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
resp, err := client.Get(url)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
success += 1
fmt.Println(tag , "=====>" , "Success:", success ,string(body) , " / ", fmt.Sprintf("%d ms", (time.Now().UnixNano() - s) /1e6))
}
测试结果
每个项目只输出Hello World! 每个测试5次取最优结果
成功接收结果次数 | NetCore | LinkCore | Golang | | --- | --- | --- | | 2404 | 3434 | 2968 |
完成总耗时 ms | NetCore | LinkCore | Golang | | --- | --- | --- | | 14908 | 3900 | 2771 |
ASPNetCore 框架的臃肿导致了Web请求的处理能力下降了很多
HttpClient
这个组件真的是让人无力吐槽,一样是并发问题,4C8G Centos7 服务器,10个并发就会导致线程堵塞
官方给的IHttpClientFactory的方案在Windows下会好一些,但是Linux下第一次冲击也会造成堵塞,反正50个并发测试了N次