Ethereum wallet/Geth increíblemente lento para sincronizar, ¿ayuda?

Así que he notado que algunas personas tienen un problema similar al mío, titulando su publicación como "muy, MUY lento para sincronizar" y otras variaciones de eso, sin embargo, se quejan de alrededor de 100 bloques por minuto.

Tengo el problema de que Geth me dice que recibe 1 bloque cada 1 a 6 minutos.

Solo me quedan 48.806 bloques (los tenía completamente sincronizados hace unos meses), y no parecen ser exactamente bloques "problemáticos" como en el rango de 200.000.

Tuve el problema el año pasado de que dejó de sincronizarse por algún motivo, así que probé todas las soluciones que pueden ayudar con eso, como eliminar todos los datos de mi cadena y probar con un disco duro diferente, nada que haga una diferencia real... .

Estoy en; Windows 10 Geth 1.7.3 Monedero Ethereum 0.9.3

Cualquier ayuda con este asunto sería muy apreciada.

¿Qué comando estás usando para sincronizar?

Respuestas (2)

Logré sincronizar mi billetera en el momento en que hizo la pregunta, ejecutándose en un servidor doméstico dedicado. Luego me olvidé de ejecutar geth durante algunas horas después de un corte de energía, y estaba a unas 3000 cuadras de retraso. Durante las próximas 2 semanas, los "bloques restantes" en la interfaz de usuario han ido variando, desde 1200 hasta aproximadamente 4000.

Luego, hace unos días, actualicé a 1.8.0 y al día siguiente a 1.8.1 de geth, y desde entonces se ha ralentizado significativamente y ahora estoy 7800 bloques por detrás.

Mi conclusión es; O geth es un pedazo de basura y no debe usarse (no he visto nada significativamente mejor), O (quizás más probable) Ethereum tiene una falla de diseño tan importante que está condenado a tener éxito. Si un servidor doméstico de gama alta dedicado a Ethereum no puede ponerse al día, entonces no hay futuro en Ethereum ni en ninguna cadena de bloques con características similares.

El hecho de que el servidor gaste el 45 % en espera de E/S, y que se hayan escrito decenas de TB en el sistema de archivos, me dice que a. lo más probable es que los desarrolladores no sepan lo que están haciendo, b. que incluso los SSD no son realmente una solución, ya que las escrituras los desgastarán demasiado rápido.

He gastado demasiado dinero y demasiado esfuerzo tratando de hacer que esto funcione. ¡"Prueba de trabajo" de repente tiene un significado diferente!

Tampoco tengo idea de por qué hay tan pocas respuestas sobre esto, por qué este no es el tema más importante para discutir en Ethereum y que cada persona involucrada gasta todo su esfuerzo tratando de resolverlo, A MENOS QUE se considere irresoluble y ahora es una cuestión de ellos haciendo una salida suave. ¿Quién sabe?

En cualquier caso, no soy un campista feliz y estoy seguro de que hay mucha gente como yo.

Se habla mucho de lo mala que es la sincronización de Geth. A medida que la red escala, la sincronización no escala también. Si bien el verano pasado podía sincronizar rápidamente la cadena de bloques en cuestión de horas, ahora necesita algo de hardware para realizar una sincronización de Geth rápidamente. Fue lo suficientemente desalentador como para desconectarme del desarrollo de Ethereum por un tiempo, pero lo superé y resolví el caso de sincronización por mí mismo.

Si crees que no es malo sincronizar, incluso los desarrolladores bromearon al respecto con el lanzamiento de Geth 1.8 "Iceberg": "Porque [Geth 1.7] no se podía sincronizar".

A partir de abril de 2018, los requisitos de hardware para un nodo completo suponen un gran hardware con respaldo de estado sólido . Un desarrollador usó Azure Standard_L16s , un servidor optimizado para almacenamiento y obtuvo una sincronización rápida en aproximadamente 8,5 horas en abril de 2018. El equipo de Geth probó la sincronización en la instancia m4.2xlarge de AWS, cuyo costo de ejecución es de $0,40 USD por hora. En el hardware de AWS, una sincronización completa tarda unos 20 días y un par de terabytes .

He estado ejecutando un clúster de nodos Geth en Digital Ocean, AWS y OVH durante un tiempo, y uso un NUC en mi escritorio para el desarrollo de LAN. Me he encontrado con casi todos los problemas de sincronización de Geth presentados en GitHub en esta etapa, ya que tengo que ejecutar nodos completos para parte del trabajo de desarrollo que estoy haciendo.

Si tiene problemas para sincronizar nodos completos , estos son algunos consejos:

  1. Use hardware respaldado por SSD con IOPS aprovisionadas. Las sincronizaciones rápidas descargan y consultan el estado de Ethereum, lo que requiere una gran cantidad de E/S de disco aleatorias. Karalabe, desarrollador de Geth, dice que no obtendrá el rendimiento en HDD. Puedo afirmar esto: al utilizar un SSHD de 2 TB de Seagate, no había ninguna esperanza de que la sincronización se realizara lo suficientemente rápido, a pesar de que lo intenté durante casi un mes seguido. Tuve buena suerte con una sincronización rápida con un conjunto RAID WD Velociraptor, que apenas proporcionaba las IOPS necesarias. Los i3nodos de AWS funcionan bien para esto. Cualquier servidor dedicado respaldado por SSD funciona. Si tiene un nodo de archivo completo, probablemente pueda salirse con la suya con bcache .

  2. Abra el puerto 30303. Geth en puertos que no sean 30303 para conexiones no parece funcionar tan bien. Mantener 30303 abierto le permitirá interconectarse y parece ayudar con los errores de "Error de sincronización".

  3. Bootstrap geth con los nodos de la red principal de otros. Un desarrollador llamado Rocky Fikki a menudo parece publicar la esencia de los pares a los que están conectados sus nodos geth . Si tiene problemas para que su nodo geth se acerque a las personas que pueden darle los bloques que necesita, intente sembrar desde sus nodos.

  4. Reinicie periódicamente sus nodos. Geth tiene muchos estados de falla extraños y errores que los desarrolladores están arreglando o tratando de arreglar. A veces, Geth dejará a todos sus compañeros y no se volverá a conectar con ninguno. A veces, por alguna razón, siempre veo "Error de sincronización, caída del par" y "Error de escritura de datos de nodo" sucesivos, que se resuelven después de un reinicio. A veces, Geth tendrá compañeros, hablará con compañeros, pero en realidad nunca sincronizará nada.

    El mecanismo de sincronización en Geth sigue siendo un poco magia negra para mucha gente. En lugar de tratar de solucionar los problemas de sincronización de Geth, simplemente escribí una aplicación de vigilancia llamada Quarian . Cada vez que Geth llega a un estado de falla que he visto antes o se retrasa demasiado, solo hago que reinicie Geth y los problemas generalmente se resuelven solos.

  5. No use su computadora portátil como un nodo de desarrollo principal. Mantenga siempre algo en funcionamiento que esté conectado a la red las 24 horas del día, los 7 días de la semana. Para el desarrollador, compré un Intel NUC que contiene un SSD Samsung Enterprise PM863 que puede soportar el abuso. Cuando estoy en mi computadora portátil, simplemente me conecto a ella, o sobre la marcha rsyncla chaindatacarpeta desde allí.

¿Recuerdas cómo dije lo del nodo completo ? Para la mayoría de las transacciones de Ethereum, probablemente solo necesite un nodo ligero . Estos se sincronizan rápidamente en casi cualquier cosa, y recomendaría probar el modelo de sincronización ligera si puede salirse con la suya. Si no necesita la funcionalidad específica de Geth, ya la semana pasada (mayo de 2018) pude obtener una parity --warpsincronización para terminar y funcionar bien en un día más o menos en un FireCuda SSHD de 2 TB usando --db-compaction=hddy -snapshot-peers=100.