I'm running:
- Which Parity version?: 2.1.0-rc1
- Which operating system?: Linux
- How installed?: via Docker
- Are you fully synchronized?: yes
- Which network are you connected to?: kovan
- Did you try to restart the node?: n/a
This is a question about scaling a multi-instance Parity deployment, with the goal of handling many simultaneous JSON-RPC calls, like some previous issues have covered and fixed.
Scenario
My app:
As part of load testing/capacity planning, I'd like to see what it would take to support e.g. Kubernetes horizontal autoscaling. Might there there be an existing Parity endpoint I could consider using as part of a Kubernetes readinessProbe?
Thanks to @ddorgan for sharing a manifest the other day - an excellent starting point. Curious what other considerations I should be thinking of?
pinging @fevo1971 and @gabreal also for this one :)
@onpaws just remember that if you scale out parity RPC nodes, you'll need to deal with nonce management on the client side. This is probably the only main issue with scaling out ethereum nodes.
You can however request the nonce from parity via RPC before sending the transaction. Or deal with it internally within your application (e.g. an increment in a database or having 'sticky' connections to the backend).
Hope this helps.
Thanks @ddorgan that's exactly the kind of insight I'm curious about!
Anything else or ok to close?
If I were interested in arranging Horizontal Pod Autoscaling, might there be an existing "health" or "back pressure" endpoint of some kind Parity already maintains you'd consider worth investigating?
@onpaws there was hostname:8545/api/health but this was actually belonged to a section in the actual wallet part of the code, which has been removed in the meantime.
However there are now two RPC calls which may help:
eth_syncing for sync state
parity_netPeers for network state
See: https://github.com/paritytech/parity-ethereum/pull/9119
Thanks @ddorgan appreciate the follow up!
Hey, @onpaws. Could you, please, share your final Parity deployment manifest with autoscaling being enabled?
How do you deal with the scaling given the fact that Ethereum client need to be synchronized before operational, which, probably, takes a looot of time?
Appreciate any answer.
Thanks, Arsenii.