Introduction to Application Tuning

Approach

Performance must be designed into an application. It is not realistic to expect performance to be tested in at the end of the development cycle. A common sense approach is provided to design StreamBase® applications that perform. The key metrics and trade-offs that impact application performance are:

  • Scaling versus path length

  • Horizontal versus vertical scaling

  • Contention

  • Latency versus through-put

Features

StreamBase® features make high-performance applications possible. However, these features must be used where appropriate. Each of these StreamBase® features can have an impact on application performance. They must be used when appropriate.

  • Managed versus non-managed objects.

  • Transactional versus non-transactional code.

  • Keys and indexes.

  • Transactions versus Java monitors for concurrency control.

  • High-availability (partitioned) managed objects versus non-partitioned managed objects.

  • High-availability versus distribution.

Tuning

Tuning a StreamBase® application involves both application architecture decisions and appropriate configuration of system parameters. The types of questions that must be answered are:

  • How should the JVM heap sizes be configured?

  • How to ensure that the garbage collector does not impact the latency of running applications?

  • What size of shared memory should be configured?

  • Should System V or file-mapped shared memory be used?

  • How much disk space is needed?

  • Should the application run on single or multiple nodes?

  • How should the application be deployed within a node?

  • Should application data be partitioned across multiple nodes?

  • When should distribution be used?

Monitoring

StreamBase® provides a rich set of application and system monitoring tools. These tools provide a way to monitor StreamBase® applications running under a load to determine how to improve the performance. Standard JVM monitoring tools complement the StreamBase® tools.