Mhabub
By:
Mhabub

160USD/mo is good enough to handle 3000 Concurrent users for a database driven application?

May 27, 2017 322 views
Load Balancing Deployment Debian

Hello,

Droplet plan 160USD/mo is good enough to handle 3000 Concurrent users for a database driven application?
I will be using:
PHP ,MYSQL and Apache as web server.

thanks in advance

1 Answer

@Mhabub

Without knowing more about your application and what it's doing, it'd be nearly impossible to give a definite answer as there's simply too many factors that'd weigh in.

...

To give a very broad answer -- if you were to simply install a LAMP stack (Apache, PHP, MySQL) and run with it using the default configuration -- as in no tweaking, tuning, optimization -- then no, I'd say you'd run in to more issues with services crashing than you'd see successful connections.

I've setup numerous single-server configurations and clusters over the years and when it comes to handling higher levels of traffic, a single server is generally not enough. Ideally, you'd separate the database from the web server and implement caching as well (such as Redis or Memcached) and that'd be a minimum setup.

Of course, it also depends on what you define as concurrent. Are you expecting that all 3,000 of the connections are going to be constantly active each second (as in doing something at all times)? If so, and we turn that in to page views (for simple math), 3,000 PV/s comes out to 180,000 PV/m (or page views per minute) or almost 11 million page views an hour (that's 259 million a day).

That's of course, assuming visitors are moving from one page to the next, or doing something that's making a request in that time frame. We can substitute page views for requests as well. Either way, the idea is to gauge expectations, so this is a rough factor to get the ball rolling :-).

...

If that is the case, no, a single server, regardless of it having 8 CPU Cores and 16GB of RAM, will not be enough to handle those levels of activity/traffic.

You'd need to offload and cluster.

Web Server(s) => Caching Server(s) => Database Server(s)

That's a very basic setup to start with, without implementing load balancing. Of course, much like a single server, it offers zero redundancy, so if one goes down, service is impacted.

Of course, even if you offload and cluster, you still need to know how to tweak, tune, and optimize each piece of software. You won't get by with running the defaults that ship with it.

...

That being said, I would recommend NGINX over Apache -- it's faster and more efficient. I'd use MariaDB over MySQL and since you'd be using NGINX, you'd be using PHP-FPM instead of the rather resource hungry mod_php that is required by Apache.

For caching, I'd recommend Redis.

...

Of course, as noted, this a very broad answer as it's hard to really give absolutes without knowing more.

Have another answer? Share your knowledge.