I have 96GB RAM in a server. How many instances I need to create in order to do load balancing and for better performance and stability?
Are you also striving to achieve high availability (HA)? Seems like you have a single point-of-failure if its just one huge system.
Can someone recommend how much RAM I need to allocate for each instance?
Really depends on your application and how memory-greedy it can be.
Will it able to handle hundred thousand over of concurrent users?
I don't see why not, however you have no mention about the CPU which is also a limiting factor here.
So all I can tell you at this point: benchmark.
- Setup one huge instance, deploy app, run test clients, monitor usage, record results.
- Split into 2 instances, setup clustering if you want to, run the same usag pattern, etc.
- 4 instances... so on.
In addition to Rado's comment, from my experiance you can start with one instance and tune the memory and thread/pool configurations.
If you have no real problem with the GC you might run one instance (if you do not need HA, but here it is better to have two separate machines) you might bring the COU to 100% with one instance. In that case a split only make sense if you are in trouble with long GC pauses after a running period, in that case a smaller amount of memory make sense to prevent from long running memory copy sessions.
Also the RAM doesn't help if you reach the maximum CPU load with a smaller amount of memory.
Just remembered, it also depends what AS version we are talking about. EAP 6 has been designed with both horizontal and vertical scalability in mind, so on previous versions breaking into multiple smaller instances might yield higher benefits.
Yes. The servers is for High Availability setup. Im using Jboss AS 7.1.1
There is a hardware load balancer infront of 2 servers. each server contain of 96GB RAM and 8 Core processor.
So how many instances should I split them up? 4 instances or 10 instances? How much Heap size I need to allocate to each instance?
What is the recommendation for a stable setup that can cater for hundred thousand over concurrent request.
As Rado and I explain you have to do a benchmark.
Setup one instance for each server and create throughput. Monitor the CPU and heap uilisation and check whether you have enough memory to handle the load.
If you reach 100% CPU with that you should not add a second instance as it will only slowdown.
For the JVM you should choose a good GC approach, you might try CMS collector or G1 (with Java7) which should have a good performance.