This is an old revision of the document!


DRAFT

The Omnidex Application Lifecycle

Production

Like any production application, Omnidex applications should be monitored to insure the best performance and flexibility. Monitoring an Omnidex application is very similar to monitoring any production application. Overall performance is monitored by checking on the available system resources for the servers. Load balancing and connection pools are commonly used to insure the highest performance and connectivity. It is also important to watch for competing processes running on the servers as they can adversely affect Omnidex performance.

There are several common strategies for monitoring a production Omnidex application:

Monitoring System Resources

Omnidex delivers the highest performance when there is a healthy balance between the main system resources: processor speed, memory and disk access. These three resources form a chain, and Omnidex's performance is limited by the slowest of these three resources.

Omnidex uses a great deal of all these resources when building indexes. Building indexes is a very intensive process and is often localized to a separate server for this reason. Building indexes on a server that is actively servicing concurrent users can degrade performance.

Well-optimized Omnidex queries will use large, short bursts of all of these resources. That is the goal of most of Omnidex optimization – to allow the query to complete quickly enough that resources are quickly freed for the next query. In many highly-responsive applications, long-running queries are avoided or redirected to a separate server to insure the best performance.

Load Balancing

Omnidex responds well to load balancing. Omnidex does not provide its own load balancing, but rather responds to general load balancers that are used across the application or the enterprise. Typically, load balancers direct queries to lightly loaded servers, and this helps insure that all Omnidex queries remain fast. Some load balancers may also direct certain classes of queries to specific servers in recognition of their resource needs.

Connection Pools

Connection pools are a common way to insure the speed of queries by maintaining a set of cached connections. These cached connections keep the Omnidex Environment open, along with the corresponding database connections and Omnidex index files. Applications can use connection pooling services such as Java's DBCP services. Alternatively, Omnidex Network Services provides a connection pooling facility.

Competing Applications

Omnidex performance can be impacted by other applications running on the server. One of the most common examples of this is the relational database itself. Most relational databases will vary number of concurrent processes and the amount of memory to maximize their performance. Relational databases rely more heavily on disk access as well. It is common to see a large multi-processor machine with plenty of memory and fast disk drives fully consumed by the relational database. When this happens it is appropriate to move Omnidex onto a different server than the database.

Periodic maintenance

Omnidex applications do not need much periodic maintenance. Primarily, it is valuable to insure that the Omnidex index files are unfragmented by regularly defragmenting the disk drives. This is also important for the underlying data, especially in the case of raw data files. Omnidex will also use temporary file space, and this drive should be maintained with plenty of unfragmented disk space.

The next stage in the Omnidex Application Lifecycle is Optimization.

 
Back to top
admin/lifecycle/production.1260247878.txt.gz · Last modified: 2012/10/26 14:25 (external edit)