Примерно каждые 3-4 минуты я видел ошибку в своем журнале
net / http: запрос отменялся при ожидании соединения (Client.Timeout превышен при ожидании заголовков)
Когда яиспользуйте ApacheBench для выражения сервера 127.0.0.1:8080 ab -c 30 -n 10000000 -k http://127.0.0.1:8080 Я думаю, что мой код в порядке. Нет ошибок.
Но примерно каждые 3-4 минуты,Я увидел ошибку в моем журнале
net / http: запрос отменен при ожидании соединения (Client.Timeout превышен при ожидании заголовков)
с моей машиной все в порядке, и это мой netstat.
LAST_ACK 2 CLOSE_WAIT 7 ESTABLISHED 108 SYN_SENT 3 TIME_WAIT 43
package httptest
import (
"fmt"
"io/ioutil"
"net/http"
"sync"
"testing"
"time"
)
var client *http.Client = &http.Client{
Timeout: 500 * time.Millisecond,
Transport: &http.Transport{
DisableKeepAlives: true,
MaxIdleConnsPerHost: -1,
},
}
func Benchmark_List(b *testing.B) {
var (
wg sync.WaitGroup
maxParallel int = 50
parallelChan chan bool = make(chan bool, maxParallel)
)
b.ResetTimer()
for i := 0; i < b.N; i++ {
parallelChan <- true
wg.Add(1)
go func() {
defer func() {
wg.Done()
<-parallelChan
}()
testHttp2()
}()
}
wg.Wait()
}
func testHttp2() {
req, _ := http.NewRequest("GET", "http://10.33.108.39:11222/index.php", nil)
resp, err := client.Do(req)
if err != nil {
fmt.Println("error", err)
return
}
defer resp.Body.Close()
_, err = ioutil.ReadAll(resp.Body)
if err != nil {
return
}
fmt.Println("success")
}
Похоже, вопрос о том, как использовать Go? Или это выглядит как ошибка сети / http?