Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple JVMs vs single app server

Tags:

I'm dealing with a system that runs a Java application per customer in its own JVM. We've got about a half dozen dedicated servers that are running close to 100 JVMs total now and sets of custom scripts for managing these JVMs. This setup is really showing its age at this point: managing that many JVMs is becoming a monitoring/management nightmare and we are constantly dealing with heap sizing issues. We'd like to move to a more modern approach and just run a bunch of applications in a single app server per physical machine. However, keeping the applications separate does have distinct advantages in terms of isolation (e.g. out of memory errors only affect one customer). Each customer's software stack has memory requirements that vary widely.

My question: is there a way to have the best of both worlds here and run multiple applications in one JVM (app server) and still maintain some level of isolation? Or is it just a modern fact of life that you need to manage memory requirements of a set of applications these days? Are there other solutions here besides an app server or Java EE container (e.g. Wildfly or Spring) that I'm missing here? It seems like this system is a holdout from another era!

like image 443
Noky Avatar asked Oct 01 '14 15:10

Noky


People also ask

How many JVMs can run on a server?

Infinite! Multiple JVMs can run on a single machine, as for example, for execution of applets a separate JVM may exist and another JVM can be started by the User for execution of Java Byte Code, on a single machine.

How many JVM is in one application server?

There's one JVM per Java application.

Can there be multiple JVM instances?

Yes you can run multiple VMs on the same machine. You just need to specify which one to run.

Can two JVM run on same machine?

Yes, you can run multiple JVM's on a single machine.


1 Answers

Checkout 'multi-tenant' JVM's.

IBM's JRE has it already: http://www.ibm.com/developerworks/library/j-multitenant-java/

Waratek has implemented it on top of the Oracle JRE, and they created ElastiCat, a Tomcat fork that isolates different applications in the same container: http://www.elasticat.com/faq/

Multi-tenancy is rumoured to appear in the official Oracle Java 9 JVM, too.

=======================================================

Update: Java 9 is out, but no word from Oracle about multi-tenancy. It seems they prefer having multiple JVM's these days, even multiple Containers (e.g. docker).

like image 168
GeertPt Avatar answered Sep 22 '22 10:09

GeertPt