I've a couple of questions:
I'm running a the node-template on a machine that has 8 cores and 64GB of RAM and its using an SSD. I have some pallets working there and I'm using the python client to submit multiple transactions and check how the node is performing. Running the substrate sub-flood
service, I got around 94 TPS and registered around 600 tx per block (but not filled it completely). The first question is, how many extrinsics can a single node handle? Does it depend on the machine specs (checking machine cpu usage it didn't reach even half of the max)? Am I getting a reasonable amount of TPS?
I'm able to submit something between 3000~5000 tx with no issue on the first run, but as time goes by, if I continue to submit this number of transactions, the node tends to slow block production (which is not what anyone would want), and its only able to keep the block production rate constant if I go down to 1000 extrinsics per batch (a single batch per block). At the time, I'm estimating the extrinsic weights using this approach Parameterizing over database accesses as I'm unable to create benchmarks for now.
I'm using the utility pallet
to submit batches.
This is an example of what I'm getting.
The second question would be, are nodes prepared to receive this amount of transactions per block? I know blocks can only store a certain amount of extrinsics based on their weight, but If a set the extrinsic weight to 0, I can store any number tbh.
I guess block production is slowed because I'm not setting the right weights, but are there any other possibilities that make the block production rate slow besides that?