第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go HTTP空閑連接池和http trace

Go HTTP空閑連接池和http trace

Go
慕蓋茨4494581 2023-01-03 11:13:29
我有一個長時間運行的 GO 程序(版本 1.18),它使用 RESTY 每秒同時發(fā)送數(shù)百個 GET 請求到遠程https://api.abcd.com。每個 GET 請求都是一個單獨的 go-routine,它使用相同的 RESTY 客戶端。遠程服務(wù)器https://api.abcd.com是nginx/1.19.2(HTTP/2),IP地址是11.11.11.11和22.22.22.22。是的,這個遠程服務(wù)器有多個 IP 地址。我在設(shè)置 RESTY 客戶端時使用主機名 SetBaseURL("https://api.abcd.com")傳輸配置是 RESTY 中的默認配置。TraceInfo() 在 RESTY 客戶端啟用。跟蹤信息中有一個“IsConnReused”字段。這個IsConnReused實際上來自于GO httptrace包中的struct GotConnInfo:type GotConnInfo struct {    Conn net.Conn    // Reused is whether this connection has been previously used for another HTTP request.    Reused bool    // WasIdle is whether this connection was obtained from anidle pool.    WasIdle bool    // IdleTime reports how long the connection was previously idle, if WasIdle is true.    IdleTime time.Duration}問題 1:GO httptrace 根據(jù)主機名(api.abcd.com)或 IP 地址確定“連接重用”?問題2:GO http包空閑連接池其實就是一個map,key是一個struct類型的connectMethodKey。此結(jié)構(gòu)中的地址字段是主機名還是 IP 地址?type connectMethodKey struct {    proxy, scheme, addr string    onlyH1              bool}這是我在 TraceInfo() 中找到的。程序一開始運行時,所有的請求都發(fā)送到11.11.11.11:443。幾分鐘后,所有請求都發(fā)送到 22.22.22.22,不再是 11.11.11.11。然后,幾分鐘后,所有請求再次開始發(fā)送到 11.11.11.11,這次沒有發(fā)送到 22.22.22.22。問題3:當請求開始發(fā)送到22.22.22.22時,到11.11.11.11的套接字連接是空閑的,為什么GO http不再使用空閑連接了?我不認為那些空閑連接已經(jīng)超時。
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

問題 1:GO httptrace 根據(jù)主機名(api.abcd.com)或 IP 地址確定“連接重用”?

httptrace.GotConnInfo.Reused跟蹤 TCP 連接是否用于另一個 HTTP 請求。它是每個 IP 地址。

問題2:GO http包空閑連接池其實就是一個map,key是一個struct類型的connectMethodKey。此結(jié)構(gòu)中的地址字段是主機名還是 IP 地址?

addrhostname

如果您將請求發(fā)送到類似的東西,則可能是一個 IP http://127.0.0.1/。

問題3:當請求開始發(fā)送到22.22.22.22時,到11.11.11.11的套接字連接是空閑的,為什么GO http不再使用空閑連接了?我不認為那些空閑連接已經(jīng)超時。

如果您使用 HTTP 1,它的工作方式可能會有所不同。有了它,每個請求都需要自己的 TCP 連接。后續(xù)請求可能會重用TCP連接,但如果要并行運行請求,則需要建立多個TCP連接。每個連接都會使用不同的 IP 地址,您會看到流量均勻分布。

使用 HTTP/2,單個 TCP 連接可用于多個并行請求。該連接使用單個 IP 地址。

這是 GO 計算新請求是否可以使用開放連接的方式:

https://cs.opensource.google/go/x/net/+/69896b71:http2/transport.go;l=881;drc=69896b714898bee1e3403560cd2e1870bcc8bd35;bpv=1;bpt=1

使用這些嬰兒車在多個 TCP 連接之間分配流量。


查看完整回答
反對 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號