Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have inherited a simple RedHat 5 - 64bit platform.

It has SCSI disks on RAID1, with 16GB of RAM. Double Core CPU.

Oracle 10g, Release 2.

This would be a decent platform for running the DB only, perhaps, but the same server in an "A-A mode" clustering (very simple) also runs Tomcat and there are several Java servlets running on this.

Sadly there is no caching platform etc. We only use an external CDN for some html caching.

I am personally more familiar with web environments on the LAMPP platform (apache, php, mysql, postgresql).

PROBLEM: Because the server has both Tomcat JSP/Java and Oracle 10g running on the same server, with no caching, I have some issues of the server going down. Often, sadly.

QUESTION: What are my options in terms of improving performance of all these different apps?

  • Connection Pooling? Example, in Postgresql world we have PgBouncer, which really helps things. Does Oracle have something similar? Or is there a famous Java-based external pooler that people use in production environments? (I'm not familiar with Java)

  • Any "SQL cache" as in the MySQL and Postgresql world?

  • Any other kind of application cache, as "APC" or "eAccelarator" in the PHP world?

  • The "OSCache" stuff from the Java world (JSP thingie I found on Google: http://onjava.com/pub/a/onjava/2005/01/05/jspcache.html?page=2)

...

What else?

Sorry if this is a noob question. I have googled and googled, but problem is I don't know what to google for, other than the broad general concepts above. So if not full answers, I would even appreciate basic pointers and I am happy to JFGI myself.

Thanks!

share|improve this question

2 Answers 2

up vote 2 down vote accepted

I believe Tomcat provides several options for connection pooling, although StackOverflow may be a better place to discuss these possibilities.

As for the rest:

Oracle bottlenecks and performance tuning is a wide and complicated field, and the same goes for J2EE applications, containers and caching.

A number of commercial and open source tools exist that should be of use, some go a long way towards both identifying possible problems and educating the user. One such commercial tool is Spotlight on Oracle by Quest Software. Quest also provides Performasure which I find to be an excellent solution for low level application diagnostics. http://www.quest.com/

Oracle provides a wealth of free documentation for their database platform on http://docs.oracle.com and http://tahiti.oracle.com including books on performance considerations and tuning.

Similarly, IBM Red Series include free books that cover performance tuning and bottlenecks related to anything from Oracle, J2EE, Linux, storage to generic system design. http://www.redbooks.ibm.com/

While not free, Oracle Database 10g Performance Tuning: Tips & Techniques is a great introductory book, so is Oracle Essentials: Oracle Database 10g if you need better understand the fundamentals of Oracle databases. You can read both online at http://www.safaribooks.com/ and I do believe they offer a free trial.

A good place to start, or at least as good as any, is to figure out what system resources are being strained, and who is using them. Is the CPU load high? If so, it caused by waiting on I/O? How is memory being used, is lack of memory causing additional I/O? Is the application or the database CPU intensive? Is the database workload CPU or I/O bound? Is the instability related to performance or could there be other issues on the system. Getting a few fundamental questions answered should at least get you on your way.

share|improve this answer

You should assure that the Tomcat JRE runs in server-mode (not client). This should be displayed on startup and is not always to be given. This should be an equal step to using eAccellerator in PHP-world - Servlets are compiled on load.

Connectionpooling is obviously neccessary. I don´t think there is a big chance to have an application without pooling. But better check it. E

In web applications I always got big improvements adding HTTP-Header (Pragma cache, Expires) to enforce caching static elements.

If you are capable of changing the programming, looking at SQL-Plans (explain) is always helpful ... it often showed me where I´m missing indexes.

And implementing caching of often used elements of course...

Another possibility to look could be increasing the Heap of the Tomcat (-Xmx....) - perhaps this helps if Tomcat runs out of memory and starts garbage collection.

What exactly do you mean with "going down"? Is the server getting slow or crashing?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.