Read timed out nach dem Lesen 0 bytes, wartete 30.000000 Sekunden in mongodb
Wenn ich arbeite oben bei 5.000.000 Datensätze in mongodb, es zeigt diesen Fehler "Read timed out after reading 0 bytes, waited for 30.000000 seconds"
im find()
Abfrage. Bitte alle mir einer helfen.
- Wenn ich die Suche um ihn herum scheint verknüpft werden, um Fehler wie diese hier: jira.mongodb.org/browse/PHP-922 , können Sie uns etwas darüber sagen, Wann und wie Sie diese Fehlermeldung erhalten?
- Werfen Sie auch einen Blick auf: stackoverflow.com/questions/20982761/... es scheint, meist mit PHP-Fragen kommen, um Licht auf diese ein
- Welche Treiber version und MongoDB-server version benutzt du? Auch sind Sie die Verbindung zu einem standalone-server, Replik-set, oder sharded cluster?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In PHP können Sie festlegen
timeout(-1)
zu Ihrem cursor.PHP-Beispiel:
Node.js Beispiel:
In PHP könnte man hinzufügen, die parameter socketTimeoutMS, um die anderen Parameter für die Verbindung Zeichenfolge, in diesem Fall 90 Sekunden.
Grüße!
Werfen Sie einen Blick auf die mongodb-log-Datei und suchen Sie Ihre Abfrage in der Sie-wie lange dauert es, bis ausführen? Wenn es dauert eine lange Zeit, haben Sie Hinzugefügt, Indizes? Werden Sie verwendet? Ausschneiden/einfügen die Abfrage von mongodb log-Datei und versuchen Sie es von mongo-shell -- und hinzufügen ".erklären()" am Ende. Es wird Ihnen sagen, den Ausführungsplan, die MongoDB ist die Durchführung-und vielleicht können Sie angreifen, Ihr problem von dieser Seite. Wenn Ihre Abfragen wirklich länger als 30 Sekunden, werden Sie wahrscheinlich brauchen, um es sowieso-unabhängig von der Treiber-timeout-Probleme.
ensureIndex Tasten und versuchen
Ich gesehen habe dieses problem auf das entfernen von 1-2kk-Protokolle, Datensätze mit php-Treiber.
Im Grunde musste ich hinzufügen-timeout (ich bin mit Indizes, nur die db ist ein bisschen groß)
Dieser arbeitete für mich