Solved

One Large JVM vs. Multiple Smaller JVMs

Posted on 2006-07-22
14
527 Views
Last Modified: 2008-02-01
Based on the latest JVM technology (J2SE 5 or higher), hardware and Application Server implementations (e.g. WebLogic 9.x or WebSphere 6.x), which of the following two configurations is better on a multiple-CPU UNIX machine:
1. One large JVM with 2-4 GB heap size and 200+ threads for a single Application Server instance.
2. Two or more smaller JVMs, each with < 1 GB heap size and < 100 threads for an Application Server cluster of multiple application server instances

What are the major pros and cons of each solution?

0
Comment
Question by:nbkd72e
  • 5
  • 4
  • 2
  • +1
14 Comments
 
LVL 26

Expert Comment

by:ksivananth
ID: 17162236
when you increase the heap, the max no. of threads get decreased!

I have read some ehere that 1GB is good trade off!

More instances can share the load and the possibility of crash is less and possible to have failover mech.

0
 
LVL 23

Expert Comment

by:Ajay-Singh
ID: 17162253
> when you increase the heap, the max no. of threads get decreased!
can you pls explain little more? i thought the max no of *active* theads depends on no of CPUs of the box.
0
 
LVL 26

Expert Comment

by:ksivananth
ID: 17162265
>>can you pls explain little more?

for e.g.,

heap         #of threads allowed

-Xmx128m    7500
-Xmx1024m  2500
0
 
LVL 26

Expert Comment

by:ksivananth
ID: 17162267
>>i thought the max no of *active* theads depends on no of CPUs of the box.

though I have not tested this, I don't think so!
0
 
LVL 23

Expert Comment

by:Ajay-Singh
ID: 17162292
GC works better on larger heap JVMs than smaller ones. The GC tuning option "-XX:+UseParallelGC" highly depends on the no of CPU available on the box. It would run efficiently if only one JVM is running.

Have a look to various GC options:
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
0
 
LVL 30

Accepted Solution

by:
Mayank S earned 84 total points
ID: 17162972
I prefer an application server cluster so that if one process fails by any chance, the system is still reliable.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:nbkd72e
ID: 17163605
I really want to hear from people who has done load test and application server performance tuning against those two scenarios, especially the experiences of tuning a high-profile production system.
0
 

Author Comment

by:nbkd72e
ID: 17163663
I was told by some application server vendor consultants a few years back that the second approach would perform better. But I am not sure if that principal is still valid based on the latest JVM, hardware and App Server technologies.

I think it worth to specify my concerns of the single large JVM approach (the first one):

    1) GC - How efficiently the JVM can handle 2-4 GB heap size without causing performance penalties. Do you think having multiple JVMs each handles GC more a smaller heap will be more efficient?

    2) Managing threads - 1000 threads per Java process vs. 200-300 threads per Java process (with 4 Java processes on the same machine), would the second case managing Java threads more efficiently, including thread scheduling, handling Java synchronization (or managing the locks/mutexes/monitors) ?

    3) As somebody already mentioned, the availability and reliability. Having to deal with something extremely large always challenges the underneath technology or implementation, and potentially need more time to get mature.
0
 
LVL 23

Assisted Solution

by:Ajay-Singh
Ajay-Singh earned 83 total points
ID: 17163869
1) GC runs better on larger heaps. So, multiple JVMs with smaller heap would degrade the performance.
2) The number 1000 is pretty huge if you talk about no of threads you should configure your application with. You really need much more cpu to handle it. At a given moment the number of active threads active (on the cpu) would be no of CPUs. Because of IO wait and other waits on the application you can spawn more threads than no of cpus on the box, but the thread no 1000 is really big.
3) If you want to run multiple instances of same JVM on the single box for more availability - its really bad design. If the box goes down for some catastrophic failure, everything would blackout.
0
 
LVL 26

Assisted Solution

by:ksivananth
ksivananth earned 83 total points
ID: 17164257
>>If you want to run multiple instances of same JVM on the single box for more availability - its really bad design. If the box goes down for some catastrophic failure, everything would blackout.

Not exactly, there is no rule that you have to run in single system, we don't expect the cluster running in single system.

>>GC runs better on larger heaps. So, multiple JVMs with smaller heap would degrade the performance.

We design the application not for GC, its for app performance! Of course, heap spec is at runtime. It is not controled by either of the design. I feel, it is to decide if multi node or single node!

The reason for multinode is load balancing and failover.

With single node approach, the two is not possible. Even if you vconfigure single node with high config 2GB... what will you do if the app recieves more load than this config?

and the other factor is that the effort you can invest. Of course, single node approach needs lesser effort than multi.
0
 
LVL 23

Expert Comment

by:Ajay-Singh
ID: 17165267
ksivananth,

I agree we don't design system for GC, but we definitely design system for better performance, and then tune with GC for low pause timings.
0
 
LVL 23

Expert Comment

by:Ajay-Singh
ID: 17165273
> With single node approach, the two is not possible.
1 or 2 - its single point of failure.

> Even if you vconfigure single node with high config 2GB... what will you do if the app recieves more load than this config?
You really need very very powerful box or your server is doing nothing (kind of ping server)
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Application launch issue with Apache Tomcat 5 24
solarwind tftp server 2 45
print map entry 34 56
servlet web applications   metadata-complete="true" or false 3 6
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now