Capacity Planning

I'm developing a plan for future server requirements and I'm wondering how others have done this?

Presently I have a single linode and everything I use is installed on it (Email with the usual, Web server, MySQL, Teamspeak, and a modest number of websites). To date I've been busy with university studies I've been undertaking and now I want to put some effort into developing my server and the services I provide. One of the sites I've developed is showing increasing traffic levels which prompted me to start thinking about how much capacty my server has. I've had MySQL crash due to memory reasons and I've use MySQLTuner script to try an mitigate the problems. I've also scheduled a cron job to restart Apache gracefully every month. (The crashes always occured on the first day of the month.)

I'm aware of strategies to distribute various functions (eg database server, mail, etc) over separate machines/boxes and use of load balancing mechanisms, but the question is "What are the breakpoints?". Factors like number of visits, size of the pages served, size of database queries, numbers of email accounts that are scanned for viruses seem straight forward to identify as 'drivers' to capacity planning. What is not clear to me is how to determine the capability of the server in dealing with all that.

Are there accepted 'rules of thumb', and/or tools used in industry for this sort of analysis?

Any advice and references would be most helpful and welcome.



1 Reply

To be precise, MySQL does not really "crash". Most probably, Linux Out Of Memory killer makes it to crash when the system is low on memory, which is a different thing.

I also had memory problems of the type that make MySQL to disappear, but they went away when I switched to nginx + PHP-FPM. Since you are using Apache >= 2.4, you could use Apache + PHP-FPM as well.

To reply your question. I think number of visits, size of the pages served, size of database queries, numbers of email accounts are not relevant at all. What really matters is total memory used and CPU load average. Those are the two things that will tell you if you need a bigger Linode or not. (But don't upgrade before trying nginx + PHP-FPM)


Please enter an answer

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct