|
49 | 49 | querierInterceptor func(*http.Request, UserContext) (*http.Request, error) |
50 | 50 | querierGlobalCacheTag uint64 |
51 | 51 | querierDisableCache bool |
| 52 | + querierHTTPClient *http.Client |
52 | 53 | ) |
53 | 54 |
|
54 | 55 | func SetQuerierApiVersionForTests(version string) { |
@@ -113,8 +114,7 @@ func (q *Querier) GetQuerierAPIVersion(userContextIn ...UserContext) (string, er |
113 | 114 | req.Header = headers |
114 | 115 | } |
115 | 116 |
|
116 | | - client := &http.Client{} |
117 | | - resp, err := client.Do(req) |
| 117 | + resp, err := querierHTTPClient.Do(req) |
118 | 118 | return resp, nil, err |
119 | 119 | }, len(QuerierHosts), nil) |
120 | 120 |
|
@@ -162,6 +162,16 @@ func initQuerier(hosts []QuerierHost, APIKey string, interceptor func(*http.Requ |
162 | 162 | querierInterceptor = interceptor |
163 | 163 | querierGlobalCacheTag = GetCurrTimeInMS() |
164 | 164 | querierDisableCache = disableCache |
| 165 | + |
| 166 | + // Initialize HTTP client with optimal settings for connection reuse |
| 167 | + querierHTTPClient = &http.Client{ |
| 168 | + Timeout: 30 * time.Second, |
| 169 | + Transport: &http.Transport{ |
| 170 | + MaxIdleConns: 100, |
| 171 | + MaxIdleConnsPerHost: 10, |
| 172 | + IdleConnTimeout: 90 * time.Second, |
| 173 | + }, |
| 174 | + } |
165 | 175 | } |
166 | 176 | } |
167 | 177 |
|
@@ -205,8 +215,7 @@ func (q *Querier) SendPostRequest(path string, data map[string]interface{}, user |
205 | 215 | } |
206 | 216 | } |
207 | 217 |
|
208 | | - client := &http.Client{} |
209 | | - resp, err := client.Do(req) |
| 218 | + resp, err := querierHTTPClient.Do(req) |
210 | 219 | return resp, nil, err |
211 | 220 | }, len(QuerierHosts), nil) |
212 | 221 | return resp, err |
@@ -256,8 +265,7 @@ func (q *Querier) SendDeleteRequest(path string, data map[string]interface{}, pa |
256 | 265 | } |
257 | 266 | } |
258 | 267 |
|
259 | | - client := &http.Client{} |
260 | | - resp, err := client.Do(req) |
| 268 | + resp, err := querierHTTPClient.Do(req) |
261 | 269 | return resp, nil, err |
262 | 270 | }, len(QuerierHosts), nil) |
263 | 271 | return resp, err |
@@ -360,8 +368,7 @@ func (q *Querier) SendGetRequest(path string, params map[string]string, userCont |
360 | 368 | } |
361 | 369 | } |
362 | 370 |
|
363 | | - client := &http.Client{} |
364 | | - response, err := client.Do(req) |
| 371 | + response, err := querierHTTPClient.Do(req) |
365 | 372 | if err != nil { |
366 | 373 | return nil, nil, err |
367 | 374 | } |
@@ -435,8 +442,7 @@ func (q *Querier) SendGetRequestWithResponseHeaders(path string, params map[stri |
435 | 442 | } |
436 | 443 | } |
437 | 444 |
|
438 | | - client := &http.Client{} |
439 | | - resp, err := client.Do(req) |
| 445 | + resp, err := querierHTTPClient.Do(req) |
440 | 446 | return resp, nil, err |
441 | 447 | }, len(QuerierHosts), nil) |
442 | 448 | } |
@@ -478,8 +484,7 @@ func (q *Querier) SendPutRequest(path string, data map[string]interface{}, userC |
478 | 484 | } |
479 | 485 | } |
480 | 486 |
|
481 | | - client := &http.Client{} |
482 | | - resp, err := client.Do(req) |
| 487 | + resp, err := querierHTTPClient.Do(req) |
483 | 488 | return resp, nil, err |
484 | 489 | }, len(QuerierHosts), nil) |
485 | 490 | return resp, err |
|
0 commit comments