What is the relationship between MaxMessageCount, AbsoluteMaxBytes, and PreferredMaxBytes?
A block in fabric consists of a MaxMessageCount number of transaction or PreferredMaxBytes?
What should be the value of these to get maximum throughput?
What is the relationship between MaxMessageCount, AbsoluteMaxBytes, and PreferredMaxBytes?
A block in fabric consists of a MaxMessageCount number of transaction or PreferredMaxBytes?
What should be the value of these to get maximum throughput?
Max Message Count: The maximum number of transactions/messages to permit in block.
Absolute Max Bytes: The (strict) maximum number of bytes allowed for serialized transactions/messages in a block.
Preferred Max Bytes: The preferred maximum number of bytes allowed the serialized transactions/messages in a batch. A transaction/message larger than the preferred max bytes will result in a batch larger than preferred max bytes.
The criteria that is encountered first will be taken into consideration while the orderer cuts the block.
If you have a constantly flowing high number of transactions, then pack as many transactions as possible in a block to get max throughput. Otherwise tweak the BatchTimeout and MaxMessageCount to optimize your transaction throughput.
If you want to dig deep on this aspect refer to this research paper: https://arxiv.org/pdf/1805.11390.pdf