Cómo hacer benchmarks de proveedores de RPC para tu flujo de trabajo
Autor: Alchemy

La elección de un proveedor de RPC debería basarse en benchmarks propios de tu carga de trabajo. Hacemos benchmarks de proveedores todo el tiempo, incluidos nosotros mismos, y hemos visto a muchos equipos hacer lo mismo. Enviar las solicitudes es la parte fácil. Lo difícil es decidir qué medir y luego construir una prueba con un resultado sobre el que realmente apostarías una decisión.
Por eso pusimos la metodología por escrito y construimos Alchemy rpcbench para ejecutarla: un solo binario que hace benchmarks de cualquier conjunto de proveedores de RPC desde tu propia máquina, con los métodos que tu app realmente llama. La metodología en sí funciona con las herramientas que ya tengas.
Vale la pena medir tres cosas: latencia bajo carga, retraso de bloques y consistencia de datos. Cada una rompe una parte distinta de tu sistema, y un proveedor fuerte en una puede quedarse atrás en otra, así que un puntaje combinado esconde justo la que te importa. Mide lo que tu app realmente llama, desde donde corre.
¿Qué deberías medir al hacer un benchmark de un proveedor de RPC?
Latencia bajo carga, retraso de bloques y consistencia de datos, medidos y reportados por separado.
La consistencia de datos es la que la mayoría de los equipos nunca prueba. Algunos proveedores sirven distintos métodos desde distintos backends, y esos backends no siempre avanzan juntos, así que un proveedor puede anunciar un head nuevo mientras los logs de ese mismo bloque llegan incompletos. Piensa en una biblioteca que actualiza su catálogo antes de que los libros lleguen a los estantes: el catálogo dice que la novedad ya está, y el estante está vacío.
¿Cuál de estas deberías medir primero?
Empieza por la que coincide con lo que tu app hace con los datos. Si actúas sobre bloques nuevos, es el retraso de bloques. Si lees los logs o el estado de un bloque en cuanto llega, es la consistencia de datos. Si no, es la latencia bajo carga. Hemos visto a equipos como Valantis, Aave, RedStone y Struct correr benchmarks que miden cosas distintas.
Después compara proveedores un método a la vez, porque un proveedor que es más rápido en promedio puede ser más lento en la única llamada que tu app hace más. Esa diferencia es lo que define todo: una cotización que llega después de que se cerró el spread no es una cotización lenta. Es una orden que no se ejecutó.
¿Cómo corres un benchmark de RPC en el que puedas confiar?
Envía solicitudes con un calendario fijo para medir la latencia. El diseño obvio es enviar una solicitud, esperar la respuesta y luego enviar la siguiente, y eso envía menos solicitudes, sin que lo notes, justo cuando un proveedor empieza a tener problemas. Tu prueba afloja en el momento en que debería mantenerse firme, así que la desaceleración que buscabas nunca aparece en los datos. En cambio, envía con un reloj fijo y registra cuánto se atrasa cada envío respecto de él. Cuando tu propia máquina se queda atrás, los números describen tu máquina.
Preparar la ejecución
Ejecutarla
El retraso de bloques es la excepción. "Quién anunció primero este bloque" solo tiene sentido si todos los proveedores se observan en el mismo momento, y es un mensaje pequeño por bloque, así que nadie compite por tu ancho de banda.
Leer los resultados
¿Qué es Alchemy rpcbench?
Alchemy rpcbench es un solo binario que ejecuta toda la metodología anterior desde tu máquina, con tus propias claves. Envía solicitudes solo a los endpoints de tu configuración, y el reporte HTML que produce se te envía directamente a ti.
Lo construimos porque poner la metodología por escrito es la mitad fácil. Cada regla anterior lleva días de construir correctamente, y la mayoría son invisibles cuando las haces mal, que es la peor combinación en una herramienta de medición.
Los valores predeterminados son un punto de partida. Una sección workload: los reemplaza por tus propios parámetros y métodos:
workload:
- method: eth_call
params:
- to: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" # a contract on your quote path
data: "0x18160ddd" # and your calldata
- "$anchor" # the pinned block every provider is asked aboutLos pasos de tasa, la duración, el timeout y la ventana de retraso de bloques también son configurables, y una pasada previa calcula el costo de la ejecución en solicitudes, tiempo y ancho de banda antes de que cualquier carga salga de tu máquina. Ese costo está en compute units de Alchemy, así que tómalo como una verificación de tamaño.
Cada ejecución genera un archivo JSON, agregados en CSV y un dashboard HTML autocontenido. No te va a entregar números que no pueda respaldar. Las muestras escasas, un proveedor limitado o una máquina que se quedó atrás se marcan en la parte superior.
Una ejecución que pasa el filtro te da cuatro cosas, en este orden:
Lo que esta metodología no te dice
- Una región no dice nada sobre otra. Si tu sistema corre en otro lugar, córrelo desde ahí.
- El retraso de bloques es relativo al proveedor más rápido que probaste, no a la punta real de la cadena.
- Los métodos corren uno a la vez, así que una ejecución nunca reproduce la mezcla de tu tráfico en vivo.
- Una ejecución es un dato. Recomendamos enfáticamente varias ejecuciones para obtener una señal sólida sobre el rendimiento, porque muchos factores pueden afectar una medición, incluidos problemas que afectan a toda la cadena.
- La herramienta Alchemy rpcbench es solo para redes EVM y soporta una red por ejecución.
¿Cómo obtienes acceso a Alchemy rpcbench?
Alchemy rpcbench está en alfa privada. Completa este formulario para solicitar acceso.
Y si prefieres construirlo tú mismo con las herramientas que ya tienes, la metodología anterior es todo lo que hace falta. Nos parece bien cualquiera de las dos opciones, siempre que el número sobre el que termines actuando sea uno que produjiste tú.
Preguntas frecuentes
¿Cómo debería comparar proveedores de RPC?
Corre la misma carga de trabajo contra todos los proveedores desde la región donde corre tu sistema, con los métodos que realmente llama. Envía con un calendario fijo, prueba los proveedores uno a la vez y fija un bloque para que todos respondan la misma pregunta. Lee los resultados método por método, con los conteos de fallas y de límites de tasa al lado de cada número de latencia, y luego repite en otro momento. Si prefieres no construir eso tú mismo, contáctanos para obtener acceso a Alchemy rpcbench.
¿Cuál es la diferencia entre latencia de RPC, retraso de bloques y consistencia de datos?
La latencia es cuánto tarda un proveedor en responder una solicitud que enviaste. El retraso de bloques es cuánto tarda en avisarte que existe un bloque nuevo. La consistencia de datos es si los logs, recibos y transacciones de ese bloque se pueden servir en el momento en que lo anuncia. Un proveedor puede ser fuerte en las tres, o fuerte en una y quedarse atrás en otra, y por eso van en columnas separadas.
¿Puedo confiar en los resultados de una herramienta de benchmark creada por un proveedor?
Sí, y no tienes que creernos. Ninguna ruta de código en Alchemy rpcbench se ramifica según el proveedor con el que está hablando, así que los timeouts o reintentos específicos de un proveedor no tienen dónde esconderse. Apunta cualquier agente de programación a tu clon con el prompt de auditoría del README y lo verificará por ti. La herramienta corre en tu máquina, con tus claves, y los resultados nunca salen de tu carpeta de salida.
¿Debería elegir un proveedor de RPC según un único puntaje general de rendimiento?
No. Un puntaje compuesto elige los pesos por ti, y los pesos correctos dependen de tu aplicación. Un indexador que hace backfill del historial y un bot de arbitraje que compite por un bloque casi no necesitan nada en común de un proveedor. Lee la dimensión que coincide con lo que estás construyendo y luego léela método por método.
¿Desde dónde debería correr un benchmark de RPC?
Desde la región donde corre tu aplicación. La latencia de RPC depende mucho de la ruta de red entre el cliente y el proveedor, así que un benchmark corrido desde una laptop, o desde una región de nube donde no despliegas, mide una ruta que tu tráfico de producción nunca toma.
¿Cuánto tarda en correr un benchmark de RPC?
El tiempo de ejecución depende de cómo configures la prueba, pero la configuración predeterminada tarda unas dos horas. Puedes configurar y empezar a correr una prueba en menos de 10 minutos. La configuración que trae Alchemy rpcbench envía 280.000 solicitudes por proveedor en Ethereum, con siete métodos y tres pasos de tasa, en unos 48 minutos, y la ventana de retraso de bloques suma otra hora. Los proveedores se turnan, así que la fase de latencia crece según cuántos pruebes. Reserva una tarde, porque la confianza requiere muestras.
¿Necesito un endpoint WebSocket para hacer benchmarks de proveedores de RPC?
Para la latencia, no. Para el retraso de bloques y la consistencia de datos, sí, porque ambos dependen de eth_subscribe y de la suscripción a newHeads. También necesitas al menos dos proveedores para el retraso de bloques, ya que mide quién anunció cada bloque primero.
¿Qué proveedores de RPC puedo probar?
Cualquier proveedor con un endpoint JSON-RPC de EVM en la cadena que estás probando. Tú aportas las URLs y las claves, y nada en el método ni en la herramienta depende de quién sea el proveedor.
¿Alchemy publica sus propios benchmarks de RPC?
Sí. Nuestra página de benchmarks publica comparaciones continuas de proveedores que puedes leer hoy. Alchemy rpcbench sirve para producir los tuyos, con la carga de trabajo de tu aplicación y desde la región donde corre.
Boletín de Alchemy
Entérate primero de los lanzamientos
Suscríbete a nuestro boletín
Recibe las últimas actualizaciones de productos y recursos de Alchemy
Al ingresar tu correo electrónico, aceptas recibir nuestras comunicaciones de marketing y actualizaciones de productos. Reconoces que Alchemy procesa la información que recibimos de acuerdo con nuestro Aviso de Privacidad. Puedes cancelar tu suscripción en cualquier momento.
Artículos relacionados

Solana Alpenglow: la mayor renovación de consenso en la historia de Solana
Alpenglow se activa en la mainnet de Solana el 21 de octubre. Qué esperar, cómo se preparó Alchemy y qué cambia por dentro.

Rendimiento de Solana gRPC: una metodología de benchmark pública
Cómo medimos la latencia de entrega de Solana gRPC en seis regiones, con resultados p50, p90 y p99, la configuración completa de la prueba y los comandos exactos para reproducirlos.

Le dimos a cada blockchain su propio agente de guardia
Cómo Alchemy usa más de 230 agentes, uno por cada red blockchain, para hacer triage y corregir alertas en nuestra flota de nodos. La mediana del tiempo de resolución bajó de 30 minutos a 8.