The message-driven bean pool is also a pool of threads, with each message-driven bean instance in the pool associating with a server session, and each server session associating with a thread. Therefore, a large pool size also means a high number of threads, which impacts performance and server resources.
When configuring message-driven bean pool properties, make sure to consider factors such as message arrival rate and pattern, onMessage method processing time, overall server resources (threads, memory, and so on), and any concurrency requirements and limitations from other resources that the message-driven bean accesses.
When tuning performance and resource usage, make sure to consider potential JMS provider properties for the connection factory used by the container (the mdb-connection-factory element in the sun-ejb-jar.xml file). For example, you can tune the GlassFish Message Queue flow control related properties for connection factory in situations where the message incoming rate is much higher than max-pool-size can handle.
Refer to Chapter 8, Administering the Monitoring Service, in Oracle GlassFish Server 3.0.1 Administration Guide for information on how to get message-driven bean pool statistics.