Client-side Thread Pools Best Practices for JMS .NET Client Applications
14.17.2 Compatibility With the Asynchronous Message Pipeline
The Message Performance Preference option is compatible with asynchronous consumers using the Asynchronous Message Pipeline, and is also compatible with synchronous consumers that use the Prefetch Mode for Synchronous Consumers feature, which simulates the Asynchronous Message Pipeline. However, if the value of the Maximum Messages value is set too low, it may negate the impact of the destinations higher-level performance algorithms e.g., Low, Medium, and High Waiting Threshold for Message Batching. For more information on the Asynchronous Message Pipeline, see Receiving Messages in Programming JMS for Oracle WebLogic Server.14.18 Client-side Thread Pools
With most java client side applications, the default client thread pool size of 5 threads is sufficient. If, however, the application has a large number of asynchronous consumers, then it is often beneficial to allocate slightly more threads than asynchronous consumers. This allows more asynchronous consumers to run concurrently. WebLogic client thread pools are configured differently than WebLogic server thread-pools, and are not self tuning. WebLogic clients have a specific thread pool that is used for handling incoming requests from the server, such as JMS MessageListener invocations. This pool can be configured via the command-line property: -Dweblogic.ThreadPoolSize=n where n is the number of threads You can force a client-side thread dump to verify that this setting is taking effect.14.19 Best Practices for JMS .NET Client Applications
The following is a short list of performance related best practices to use when creating a JMS .NET client application: ■ Always register a connection exception listener using an IConnection if the application needs to take action when an idle connection fails. ■ Have multiple .NET client threads share a single context to ensure that they use a single socket. ■ Cache and reuse frequently accessed JMS resources, such as contexts, connections, sessions, producers, destinations, and connection factories. Creating and closing these resources consumes significant CPU and network bandwidth. ■ Use DNS aliases or comma separated addresses for load balancing JMS .NET clients across multiple JMS .NET client host servers in a cluster. For more information on best practices and other programming considerations for JMS .NET client applications, see Programming Considerations in Use the WebLogic JMS Client for Microsoft .NET. 15 Tuning WebLogic JMS Store-and-Forward 15-1 15 Tuning WebLogic JMS Store-and-Forward For WebLogic Server releases 9.0 and higher, JMS provides advanced store-and-forward capability for high-performance message forwarding from a local server instance to a remote JMS destination. See Understanding the Store-and-Forward Service in Configuring and Managing Store-and-Forward for Oracle WebLogic Server. The following sections provide information on how to get the best performance from Store-and-Forward SAF applications: ■ Section 15.1, Best PracticesParts
» 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