(увеличивается в потолок правильнее сказать, так как фат истиной утечки установлен не был) из net/http, fasthttp при наличии > 1000 горутин? 
                  
                  
                  
                  
                  
                  
                  
                  
                  func worker(timeout time.Duration, wg *sync.WaitGroup, in chan Pair, out chan Pair) {
                  
                  
                    client := &fasthttp.Client{
                  
                  
                      MaxIdleConnDuration: timeout,
                  
                  
                    }
                  
                  
                    for {
                  
                  
                      scheme := []string{"https"}
                  
                  
                      domain := <-in
                  
                  
                      for _, s := range scheme {
                  
                  
                        t := time.Now()
                  
                  
                        req := fasthttp.AcquireRequest()
                  
                  
                        resp := fasthttp.AcquireResponse()
                  
                  
                  
                  
                  
                        host := fmt.Sprintf("%s://%s", s, domain.String)
                  
                  
                        req.Header.SetMethodBytes([]byte("GET"))
                  
                  
                        req.SetRequestURI(host)
                  
                  
                        err := client.DoTimeout(req, resp, timeout)
                  
                  
                        s := fmt.Sprint(time.Now().Sub(t), resp.StatusCode(), err, " ", host, " ", resp.LocalAddr())
                  
                  
                        out <- Pair{String: s, Index: domain.Index, Err: err}
                  
                  
                  
                  
                  
                        fasthttp.ReleaseResponse(resp)
                  
                  
                        fasthttp.ReleaseRequest(req)
                  
                  
                      }
                  
                  
                    }
                  
                  
                    wg.Done()
                  
                  
                  }
                  
                  
                
Я его не стал заморачиваться писать, покуда 250 лямов строк я не дожидался, когда обработаются. Меня раньше разрывается RAM
О, я знаю, было такое же. У client есть метод типа CloseIdleConnections(), его нужно вызывать, когда клиент больше не нужен, он закроет все соединения и освободит память.
.
@cuda23 попробуй это, должно помочь, просто закрывай сразу как тебе не нужно будет соединение.
Вот, собственно я так делал
Обсуждают сегодня