wangjialing218 opened a new issue #12959: URL: https://github.com/apache/pulsar/issues/12959
**Is your enhancement request related to a problem? Please describe.** We use `maxMessagePublishBufferSizeInMB` to limit the direct memory usage for reading messages from producers, default value is 1/2 of direct memory. If we enable any Protocol Handler in broker such as KoP, the direct memory to buffer the pending messages from Kafka producers is not limited by `maxMessagePublishBufferSizeInMB`. And if we have Pulsar producers and Kafka producers sending message together with higher throughput than BookKeeper IO, broker OOM will happen. Although we could add another configration in KoP to limit the direct memory usage for KoP, we could not use the entire memory space since we will have two separate configration for pulsar and KoP. **Describe the solution you'd like** To make effective use of memory, using a LongAdder in `BrokerService` to record the current pending bytes for entire broker, include both pulsar pending messages and Protocol Handler's pending messages. When handling producer message, we could check if pending bytes over `maxMessagePublishBufferSizeInMB` and stop reading from producer both in broker and Protocol Handler side. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
