<p><strong>Max Message Count</strong>: The maximum number of transactions/messages to permit in block.</p>

<p><strong>Absolute Max Bytes</strong>: The (strict) maximum number of bytes allowed for serialized transactions/messages in a block. </p>

<p><strong>Preferred Max Bytes</strong>: 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.</p>

<p>The criteria that is encountered first will be taken into consideration while the orderer cuts the block.</p>

<p>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 <strong>BatchTimeout</strong> and <strong>MaxMessageCount</strong> to optimize your transaction throughput.</p>

<p>If you want to dig deep on this aspect refer to this research paper: <a href="https://arxiv.org/pdf/1805.11390.pdf" rel="nofollow noreferrer">https://arxiv.org/pdf/1805.11390.pdf</a></p>
Block size and transaction per block in Hyperledger Fabric
<p>What is the relationship between MaxMessageCount, AbsoluteMaxBytes, and PreferredMaxBytes?</p>

<p>A block in fabric consists of a MaxMessageCount number of transaction or PreferredMaxBytes?</p>

<p>What should be the value of these to get maximum throughput?</p>