Zu Viele geöffnete Datei Fehler in Golang

Ich bin einfach Lesen der /proc/diskstats - Datei. Mein code ist:

func ReadFromFile(filepath string)(string){
    defer func() {
        if err1 := recover(); err1 != nil {
            fmt.Println("!!!!!!!!!!!!!!!!Panic Occured and Recovered in readFromFile(), Error Info: ", err1)
        }
     }()

    strData := ""

    data, err := ioutil.ReadFile(filepath)
    if err != nil{
        fmt.Println("File read error: ", err)
        return ""
    }

    strData = string(data)
    return strData
}

Den Fehler bin ich immer:

File read error: open /proc/diskstats: too many open files

Nicht nur für diese Datei, ich bin auch immer die gleichen Fehler für einige andere Dateien.

Habe ich auch diesen Befehl ausführen:

root@golang:~# lsof|wc -l

785

Bitte guide mich.

  • Was ist Ihr ulimit?
  • Meine ulimit ist 1024
  • ich neu gestartet, meinen Dienst, dann habe ich keinen Fehler,aber die Ausgabe von lsof|wc -l Ausgabe ist, halten Sie auf incresing.
  • Schließen Sie nach dem Lesen?
  • Nein, ich denke, so ,wie es zu tun. können Sie bitte helfen.
  • io.ReadFile keine Datei schließen Funktion direkt. Es ist enthalten in den ReadFile Funktion selbst. Es ist also nicht erforderlich, die Datei zu schließen ausdrücklich. Es wird automatisch schließen.
  • ioutil.ReadFile schließt nach dem Lesen. Und dump ganze Inhalt.
  • Wie rufst du die Funktion? Die Leckage scheint von woanders.
  • lsof|wc -l zählt, Dateien öffnen, system-weit. Sie haben es mit der -p option für Ihren Prozess. Es hilft auch, um wirklich zu sehen, die Ausgabe von lsof um zu sehen, was die open-fds sind um zu helfen, das problem zu identifizieren.

InformationsquelleAutor GKV | 2016-06-14
Schreibe einen Kommentar