Synchronisation mit bitcoin-qt sehr langsam (0,01%)

Ich habe das Problem, dass die Synchronisierung meines Knotens sehr langsam ist. Ich bin 14 Wochen im Rückstand und es wird geschätzt, dass es 12 Wochen dauert, um synchronisiert zu werden. Die Synchronisationsrate pro Stunde beträgt nur 0,01 %. Ich habe eine schnelle Breitbandverbindung und keine anderen Probleme mit diesem PC. Es sollte in der Lage sein, die gesamte Blockchain in wenigen Stunden herunterzuladen. Die durchschnittliche Übertragungsrate liegt jedoch bei etwa 0,5 KB/s. Irgendeine Idee, was das Problem sein könnte? Ich verwende v0.14.2 und die Anzahl der ausgehenden Verbindungen beträgt 3. Ich habe den Cache-Speicher bereits auf 800 MB geändert, aber das hat nichts geändert.

Wie viele eingehende Verbindungen sehen Sie? Verwenden Sie Windows, Linux oder macOS? Für das, was es wert ist, habe ich das gleiche Problem. Ich bin auf 0.4.2 unter Windows 10 mit einer Netzwerkverbindung von 100 Mbit/s. Die ersten ca. 25 % der Blockchain wurden schnell synchronisiert, aber danach wurde es sehr langsam. Ich erhalte etwa alle 20 Sekunden einen neuen Block. Ca. 2 eingehende, 4 ausgehende Verbindungen.
Ich verwende es unter Windows 8.1. Ich habe jetzt 8 ausgehende Verbindungen (ich musste eine Blockchain-Datei löschen, weil es ein separates Problem gab, nachdem ich diese Frage gestellt hatte). Derzeit dauert es 3 Jahre, alles herunterzuladen, was Unsinn ist.
Es ist wahrscheinlich nicht das eigentliche Herunterladen von Blöcken, das es langsam macht. Aus persönlicher Erfahrung auf einem 2,5-GHz-Core-i5-Notebook mit Bitcoin Core v0.15.1 dauerte es mehr als fünf Tage, um die anfängliche Synchronisierung durchzuführen. Die meisten langsamen schienen Blöcke zu validieren. Es war anfangs sicherlich nicht annähernd so langsam, daher vermute ich, dass irgendwo entlang der Blockchain ein BIP aktiviert wurde, das dazu führt, dass die Validierung danach langsam ausgeführt wird. Ich habe bemerkt, dass es für eine Weile schneller schien, wenn ich sicher beendete und Bitcoin Core schön herunterfahren ließ, bevor ich es wieder startete.
Hallo Willtech, danke. Es stellte sich heraus, dass Bitcoin Core nicht sehr gut mit Netzlaufwerken funktioniert. Ich habe die Daten seitdem mit iscsi abgebildet und das hat gut funktioniert. Trotzdem ist die gesamte Synchronisierung im Allgemeinen langsam, was schlecht ist, aber es scheint nichts zu geben, um es zu umgehen.
@michL Danke. Das würde reichen. Wenn Ihnen meine Antwort unten geholfen hat, würde ich mich freuen, wenn Sie sie als akzeptiert markieren würden, damit die Frage nicht "unbeantwortet" bleibt.
Meine Windows 10-Firewall blockierte es

Antworten (5)

Bitcoin Core sync sehr langsam

Bitcoin Core kann in relativ kurzer Zeit vollständig synchronisiert werden, was hauptsächlich von der Hardware abhängt.

Die meiste Arbeit besteht nicht darin, die Blöcke tatsächlich herunterzuladen, sondern sie und jede Transaktion, die sie enthalten, zu validieren. Es hängt nicht nur vom Herunterladen der Blöcke ab, sondern auch von der Menge und Komplexität jeder Transaktion. Das Herunterladen der Blöcke selbst ist normalerweise kein Problem, wenn Sie mit mehreren Knoten (ausgehend) verbunden sind. Ich kann Blöcke im Allgemeinen in jeweils fünfundvierzig Sekunden herunterladen (einschließlich der Anforderungszeit usw. und der Validierung sowie der Übertragung), wenn ich offline war und meinen eingeschränkten lokalen 256-Kbps-Link nachhole. Meine Upload-Geschwindigkeit ist niedrig und die Latenz hoch. Bei einer Rate von einem Block pro fünfundvierzig Sekunden würde es derzeit über zweihundertdreiundsechzig Tage dauern, um die gesamte Blockchain zu vervollständigen, da es zum Zeitpunkt des Schreibens mehr als 506822 Blöcke gibt.

Nach meiner persönlichen Erfahrung dauerte die anfängliche Synchronisierung auf einem 2,5-GHz-Core-i5-Notebook mit 4 GB RAM, auf dem Fedora mit Bitcoin Core v0.15.1 ausgeführt wurde, tatsächlich über fünf Tage. Dafür habe ich ADSL2+ verwendet und das eigentliche Herunterladen der Blöcke nie als Problem wahrgenommen.

Leistung der anfänglichen Synchronisierung

Die Leistung der anfänglichen Synchronisierung hängt weitgehend von der individuellen Leistung Ihres Computers ab, vorausgesetzt, Ihr Internet ist in Ordnung.

Verwenden Sie immer die neueste Release-Version von Bitcoin Core (einschließlich bitcoin-qt und bitcoind), die von der offiziellen Website unter www.bitcoin.org heruntergeladen wurde . Ein Upgrade ist sicher und einfach, beenden Sie Bitcoin Core einfach zuerst sicher und erstellen Sie wallet.datvor dem Upgrade ein neues sicheres Backup von Ihnen.

Parameter anpassen

Es gibt einige Parameter, die Sie je nach System betrachten und berücksichtigen können. Erstellen Sie immer eine Sicherungskopie Ihrer Brieftasche, bevor Sie Änderungen vornehmen. Die Parameter können auf der Befehlszeile oder allgemein in Ihrer bitcoin.confDatei eingegeben werden, die Sie in diesem Fall beenden und Bitcoin Core neu starten müssten, um den Effekt zu sehen. Einige Dinge zu beachten, die einen Unterschied machen könnten :

Ich gehe hier davon aus, dass Sie bitcoin-qt ausführen, was die GUI-Version und nicht bitcoind ist.

Wenn Parameter in der bitcoin.confDatei verwendet werden, lassen Sie das führende -.

  • -datadir=Sie könnten Ihr Datenverzeichnis auf einem schnellen Laufwerk haben. Wenn Sie Ihren gesamten .bitcoin-Ordner verschieben, müssen Sie diesen Parameter in der Befehlszeile angeben. Beachten Sie, dass, wenn Sie Ihr Datenverzeichnis ändern und den .bitcoin-Ordner nicht zuerst an den neuen Speicherort kopieren, eine neue Brieftasche erstellt und der Download der Blockchain von vorne beginnt.
  • -dbcache=Der Standardwert dafür ist 450. Wenn Sie 8 GB RAM haben, können Sie dies problemlos auf 4096 setzen
  • par=Die Standardeinstellung für diese Einstellung ist automatisch, aber ich weiß nicht, was die automatische Einstellung bewirkt. Sie könnten versuchen, dies auf -1 zu setzen, wodurch ein Kern frei bleibt.
  • -banscore=Sie könnten versuchen, dies auf 10 zu setzen, um fehlerhafte Knoten früher zu starten.
  • -listen=Sie können dies vorübergehend auf 0 setzen, um eingehende Verbindungen zu deaktivieren, während Sie die anfängliche Synchronisierung durchführen. Ihr Busy Node benötigt keine zusätzliche Arbeit.

Nach der anfänglichen Synchronisierung können Sie diese Einstellungen auf ihre Standardeinstellungen zurücksetzen, aber wahrscheinlich Ihr Datenverzeichnis dort belassen, wo Sie es abgelegt haben.

Einige dieser Parameter sind als Optionen im Menü bitcoin-qt Einstellungen > Optionen verfügbar.

TLDR; Die kurze Antwort, wenn Sie es schnell wollen, lautet: Holen Sie sich einen schnellen Computer, jede Menge RAM, eine schnelle Festplatte und schnelles Internet. Das gleiche wie immer, wenn Sie etwas schnell auf einem Computer wollen.

In der realen Welt und aus persönlicher Erfahrung hat die Verwendung einer SSD die Synchronisierungsgeschwindigkeit auf meinem Beispielsystem gegenüber der oben angegebenen Leistung um mehr als das 10-fache erhöht.

Anekdoten

Beispiel aus der Praxis für schwankende Systemleistung: Ich kenne jemanden, der an einer ziemlich großen, aber nicht außergewöhnlich großen Illustrator-Datei arbeiten musste. Er öffnete es auf seinem ~ 12 Monate alten Mac der oberen Spezifikation, der normalerweise eine hervorragende Leistung erbringt, und es war praktisch unbrauchbar (langsame Reaktion). Nur zum Spaß dachte er, er würde dieselbe Datei auf einem Standard-PC ausprobieren, öffnete sie in Illustrator und es war völlig normal. Einige Hardware-/Software-Builds haben Engpässe für einige Prozesse. Für einige Operationen gilt wahrscheinlich das gegenteilige Ergebnis.

Beachten Sie auch, dass ich beobachtet habe, dass das Beenden und Neustarten von Bitcoin Core während der anfänglichen Synchronisierung es für eine Weile etwas zu beschleunigen scheint, sobald es sich wieder mit den Knoten verbindet.

Unter erneuter Bezugnahme auf persönliche Erfahrungen scheint die Synchronisierung unter Windows 10 64-Bit um Größenordnungen schneller zu sein als die Synchronisierung unter Linux auf derselben Hardware - selbst wenn Windows in Gnome-Boxen ausgeführt wird, durchläuft es in der Anfangsphase problemlos 100 Blöcke pro Sekunde des Downloads.

Alternativen

Wenn Sie ernsthafte Probleme haben, auf die Synchronisierung von Bitcoin Core (ein Full-Node-Client) zu warten, und Sie die zusätzlichen Funktionen, die Bitcoin Core bietet, dann nicht benötigen, können Sie Electrum (kein Full-Node-Client) ausprobieren, das dies nicht tun muss anfängliche Synchronisierung. Auf Fedora 27 ist das Erhalten von Electrum so einfach wie sudo dnf install electrum.

Ich hatte das gleiche Problem auf einem sehr alten Rechner (mit 4 GB RAM und einer Intel Core 2 Duo E8400 CPU), auf dem Debian GNU/Linux lief. Ich habe die sehr hilfreiche Antwort von @Willtech gelesen und folgenden Befehl abgeleitet:

./bitcoin-qt -banscore=10 -dbcache=1024 -listen=0

Dies führte zu einer Synchronisierungszeit von ungefähr 2 Wochen auf diesem PC. Sehr lange zwar, aber viel besser als neue Hardware kaufen zu müssen...

Tut mir leid, dass ich diesen Beitrag necro, aber diese Probleme bestehen bis heute, sogar auf Satoshi:v0.20.x.

Hier ist eine schnelle Lösung, um Ihre Probleme zu lindern. Geben Sie manuell Peer-IPs für die Konsole an. Wenn Sie Bitcoin-qt verwenden, verwenden Sie Strg+t, um die Konsole zu öffnen, und geben Sie Folgendes ein:

addnode <node IP>:<node port, almost always 8333> onetry

für jede gewünschte IP.

Sie können Knoten-IPs aus einem öffentlichen Knotenverzeichnis wie Bitnodes abrufen . Wählen Sie eine Reihe zufälliger Knoten aus und stellen Sie sicher, dass sie sich nicht alle am selben geografischen Standort und/oder von einem VPS-Anbieter (z. B. Amazon, Google usw.) befinden, und versuchen Sie, sie zu diversifizieren. Es sollte Ihre Geschwindigkeit etwas erhöhen, da diese Knoten Sie bei der Peer-Erkennung unterstützen.

Ich vermute, Ihr Computer ist zu langsam.

Verwenden Sie die neueste Version (z. B. 0.15.1) und ändern Sie die Cache-Werte nicht, es sei denn, Ihr RAM ist kleiner als 8 GB (800 MB sind weniger als die Standardeinstellung, also haben Sie es durch die Einstellung tatsächlich verschlechtert).

Wenn man sich Bitcoin Core v0.15.1 ansieht, heißt es, dass der Standardwert für dbcache450 MB ist

Aus irgendeinem Grund geben Ihnen einige Knoten keine Blöcke, wenn Sie mit ihnen verbunden sind. Um festzustellen, ob dies bei Ihnen der Fall ist, öffnen Sie Peers (Fenster > Peers) und prüfen Sie, wie viel für jeden Knoten empfangen wird. Wenn ein Knoten Ihnen keine Daten liefert, sperren Sie ihn einfach, indem Sie mit der rechten Maustaste klicken und "1 Stunde sperren" auswählen, bis Sie mit einem Knoten verbunden sind, der Ihnen tatsächlich Blöcke sendet.

Bitcoin verbindet sich standardmäßig mit 10 Knoten, aber wenn Sie Pech haben, werden Sie mit 10 Knoten verbunden, die Ihnen keine Blöcke geben. Normalerweise wird dieses Problem durch einfaches Warten behoben, aber das Sperren von Knoten, bis Sie mit einigen schnellen verbunden sind, ist ein viel schnellerer Weg.