Lookup [HOST]: no such host Fehler in Gehen

Habe ich dieses test-Programm fetch url parallele, aber wenn ich steigen die parallele Zahl auf etwa 1040, ich fange an lookup www.httpbin.org: no such host Fehler.

Nach etwas Google fand ich andere sagen, dass Sie nicht das Ende der Reaktion wird das problem verursachen, aber ich nicht schließen, dass mit res.Body.Close().

Was ist hier das problem? Dank sehr viel.

package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func get(url string) ([]byte, error) {

    client := &http.Client{}
    req, _ := http.NewRequest("GET", url, nil)

    res, err := client.Do(req)

    if err != nil {
        fmt.Println(err)
        return nil, err
    } 

    bytes, read_err := ioutil.ReadAll(res.Body)
    res.Body.Close()

    fmt.Println(bytes)

    return bytes, read_err
}

func main() {
    for i := 0; i < 1040; i++ {
        go get(fmt.Sprintf("http://www.httpbin.org/get?a=%d", i))
    }
}
  • Ich von Ihnen positiv bewertet werden sowohl dystroy und simonmenke Antworten, weil Sie sind beide Recht. Sie nur näherte sich dem problem aus zwei verschiedenen Blickwinkeln. Das Problem ist, Sie schlagen die FD-Grenze durch die Eröffnung von über 1000 verbindungen zum host gleichzeitig. Dystroy die Antwort ist weniger FDs, indem Sie weniger gleichzeitige verbindungen und simonmenke s ist die Erhöhung der FD-Grenze. Für Ihren speziellen Fall empfehle ich Dystroy Antwort. Für jemand anderen läuft in das gleiche problem, kann es mehr Sinn machen, zu verwenden simonmenke ist.
InformationsquelleAutor wong2 | 2012-10-18
Schreibe einen Kommentar