Thread Utilization When Using WebLogic Destinations Limitations for Multi-threaded Topic MDBs
11.2.3 Thread Utilization When Using WebLogic Destinations
The following section provides information on how threads are allocated when WebLogic Server interoperates with WebLogic destinations. ■ Non-transactional WebLogic MDBs allocate threads from the thread-pool designated by the dispatch-policy as needed when there are new messages to be processed. If the MDB has successfully connected to its source destination, but there are no messages to be processed, then the MDB will use no threads. ■ Transactional WebLogic MDBs with transaction batching disabled work the same as non-transactional MDBs except for Topic MDBs with a Topic Messages Distribution Mode of Compatibility the default, in which case the MDB always limits the thread pool size to 1. ■ The behavior of transactional MDBs with transaction batching enabled depends on whether the MDB is listening on a topic or a queue: – MDBs listening on topics: — Each deployed MDB uses a dedicated daemon polling thread that is created in Non-Pooled Threads thread group. Topic Messages Distribution Mode = Compatibility: Each deployed MDB uses a dedicated daemon polling thread that is created in the Non-Pooled Threads thread group. Topic Messages Distribution Mode = One-Copy-Per-Server or One-Copy-Per-Application: Same as queues. – MDBs listening on queues — Instead of a dedicated thread, each deployed MDB uses a token-based, synchronous polling mechanism that always uses at least one thread from the dispatch-policy. See Section 11.5, Token-based Message Polling for Transactional MDBs Listening on QueuesTopics . For information on how threads are allocated when WebLogic Server interoperates with MDBs that consume from Foreign destinations, see Section 11.4.2, Thread Utilization for MDBs that Process Messages from Foreign Destinations .11.2.4 Limitations for Multi-threaded Topic MDBs
When the topicMessagesDistributionMode is Compatibility, the default behavior for non-transactional topic MDBs is to multi-thread the message processing. In this situation, the MDB container fails to provide reproducible behavior when the topic is not a WebLogic JMS Topic, such as unexpected exceptions and acknowledgement of messages that have not yet been processed. For example, if an application throws a RuntimeException from onmessage, the container may still acknowledge the message. Oracle recommends setting max-beans-in-free-pool to a value of 1 in the deployment descriptor to prevent multi-threading in topic MDBs when the topic is a foreign vendor topic not a WebLogic JMS topic. Note: You must configure the max-threads-constraint parameter to override the default concurrency of 16. 11-4 Performance and Tuning for Oracle WebLogic Server Transactional MDBs automatically force concurrency to 1 regardless of the max-beans-in-free-pool setting.11.3 Best Practices for Configuring and Deploying MDBs Using Distributed Topics
Parts
» Oracle Fusion Middleware Online Documentation Library
» Document Scope and Audience Guide to this Document
» Performance Features of this Release Tune Pool Sizes
» Understand Your Performance Objectives
» Locate Bottlenecks in Your System Minimize Impact of Bottlenecks Tune Your Application
» VM Heap Size and Garbage Collection
» Choosing a Garbage Collection Scheme Using Verbose Garbage Collection to Determine Heap Size
» Other Java HotSpot VM Options
» Specifying Heap Size Values Tuning Tips for Heap Sizes Automatically Logging Low Memory Conditions
» JVM Tuning Considerations Using JRockit Flight Recorder Tuning Considerations
» Setting Java Parameters for Starting WebLogic Server
» Development vs. Production Mode Default Tuning Values
» Tuning Muxers Tuning Network IO
» Tuning Message Size Tuning Complete Message Timeout Tuning Number of File Descriptors
» Tune the Chunk Parameters Tuning Connection Backlog Buffering
» Tuning Cached Connections Tuning Network IO
» Scalability and High Availability
» JNDI Binding, Unbinding and Rebinding Running Multiple Server Instances on Multi-Core Machines
» Filtering Loader Mechanism Class Caching
» Using the Default Persistent Store Using Custom File Stores and JDBC Stores
» Basic Tuning Information Tuning File Stores
» Best Practices When Using Persistent Stores Tuning JDBC Stores General Suggestions
» Transaction-Level Caching Caching between Transactions Ready Bean Caching
» Tuning the Stateless Session Bean Pool Tuning the MDB Pool Tuning the Entity Bean Pool
» Use JDBC Batch Operations Tuned Updates Using Field Groups include-updates
» call-by-reference Bean-level Pessimistic Locking Concurrency Strategy
» Cache Miss Ratio Lock Waiter Ratio
» Lock Timeout Ratio Pool Miss Ratio
» Destroyed Bean Ratio Pool Timeout Ratio
» Determining the Number of Concurrent MDBs Selecting a Concurrency Strategy
» Thread Utilization When Using WebLogic Destinations Limitations for Multi-threaded Topic MDBs
» Use Test Connections on Reserve with Care Cache Prepared and Callable Statements
» Read-only, One-Phase Commit Optimizations JMS Performance Tuning Check List
» Improving Message Processing Performance
» Cache and Re-use Client Resources Tuning Distributed Queues
» Quota Resources Destination-Level Quota
» Defining a Send Timeout on Connection Factories
» Tuning Topics Tuning for Large Messages Setting Maximum Message Size for Network Protocols
» Compressing Messages Oracle Fusion Middleware Online Documentation Library
» How Flow Control Works Configuring Flow Control
» Defining a Message Expiration Policy Configuring an Expiration Policy on Topics
» Configuring an Expiration Policy on Queues Configuring an Expiration Policy on Templates
» Defining an Expiration Logging Policy Expiration Log Output Format
» Best Practices Using UOO and Distributed Destinations Migrating Old Applications to Use UOO
» Messaging Performance Configuration Parameters
» Client-side Thread Pools Best Practices for JMS .NET Client Applications
» Best Practices Changing the Batch Size Changing the Batch Interval
» Changing the Quality of Service Using Multiple Bridge Instances Changing the Thread Pool Size
» Classloading Optimizations for Resource Adapters Connection Optimizations
» Disable Page Checks Use Custom JSP Tags Precompile JSPs
» Managing Session Persistence Session Management
» Thread Management InteractionSpec Interface Pub-Sub Tuning Guidelines
» Setting the Buffering Sessions Releasing Asynchronous Resources
Show more