Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scaling a JavaEE application to 1.000.000 concurrent users

I have a JavaEE application: 1 EAR using EJB and SOAP; some WARs using Servlets. Currently the EAR is deployed in Glassfish 3.1.2 (community edition) and the WARs either in tomcat or also on the Glassfish server.

The app is backed by a MySQL database and mostly does some trivial data massaging in and out of the database. There is virtually no static content. In the current architecture, virtually no requests can be answered by a war itself and always involve the EAR (it might be possible to change this with some re-engineering).

This works out of the box for 20 concurrent users and with some http thread pool tweaking for up to 200 concurrent users on a medium sized server.

I now have to scale the application to cope with 1.000.000 users (this is not an optimistic guess but a realistic requirement for the business; most of the 'users' will be devices deployed in the field).

How do I scale this application to deal with 1.000.000 concurrent users? Especially:

  • Should I be able to get more than 200-500 users served by a single glassfish server (for a not too demanding webapp)? If yes, what should I aim for?
  • glassfish clusters seem to be an option, but how far does that scale? Even then, running 1000-2000 servers (even in the cloud) does not really sound appealing to me.
  • If tomcat/glassfish is the wrong answer, what are the alternatives?
  • Currently the bottleneck is the webapp, but I assume at some stage the DB might become an issue too. How well does MySQL scale to such size?
like image 777
Carsten Avatar asked Nov 04 '22 08:11

Carsten


1 Answers

Hope you will find some useful information in the below URL.

http://highscalability.com/blog/category/example

like image 70
Arun Chandrasekaran Avatar answered Nov 15 '22 10:11

Arun Chandrasekaran