Skip to main content
TLDR:
  • For benchmarking node performance across regions and providers, use the Chainstack Compare.
  • For ad-hoc latency checks, nmap -p 443 <host> measures the TCP-connect time, and time curl ... measures full JSON-RPC round-trip.
  • ping and traceroute won’t work — ICMP is disabled on Chainstack nodes.
  • For sustained measurement and logging, use the Python recipe below.

Use Chainstack Compare

Chainstack Compare benchmarks RPC nodes across providers, protocols, and regions on metrics like latency, requests-per-second, and data-fetching throughput. Start there before reaching for ad-hoc tools — it covers what you usually want to know.

Why ping and traceroute don’t work

ICMP is disabled by default on the instances running Chainstack nodes for security reasons. Running ping, traceroute, or tracert against your node hostname will time out or show lost packets — that’s expected behavior, not an outage. Use the TCP/HTTP methods below instead.

nmap — TCP-connect latency

nmap measures the latency of a TCP handshake against the node, which is a good proxy for raw network round-trip time. Chainstack endpoints serve HTTPS on port 443:
Sample output:
For a more precise number, add --reason --packet-trace or use tcptraceroute.

time curl — full JSON-RPC round-trip

This measures the full HTTPS round-trip including TLS handshake plus the node’s processing time for a real RPC call:
Use a fast method like eth_blockNumber or eth_chainId to isolate transport latency from node-side processing. For finer breakdown, use curl’s built-in -w timing variables:

Python — sustained measurement with CSV logging

For a longer recording session — for example, watching latency over an hour to characterize jitter — use this script:
The resulting latency.csv is ready for pandas, DuckDB, or a quick plot:

See also

Last modified on May 19, 2026