I'm wondering what an appropriate way to estimate RAM size for application server is.
I'm planning to build an application server with Apache as Web server and Django as application framework. databases exist on different nodes.
at first, I thought finding out all cases that those middlewares use memory and calculating how much each case would use memory would do the job. but now I'm lost on how to find those use cases and also wonder this is appropriate to find a suitable RAM size for this server.
if anyone has experience on estimating RAM size for application server, could you tell me how you have done that or suggest me any book that would help me from this situation?
System requirements calculation is more of an art than a science.
For games, it's often done by running through the game on progressively worse and worse hardware (e.g. less ram, slower CPU, less beefy GPU) until you get to around ~30fps (that's "Recommended" apparently), and then keep on going until a point where you can't play it at all (e.g. sub-10fps performance), that's your minimum.
For other software, without actually testing it on hardware, it really often is guesswork in combination with load-testing with some profiling: for example, spamming a web-application with lots of test requests and seeing how much RAM the webserver's process eats-up and how the CPU holds-up.
Be careful to also see how many resources are consumed by other, non-proprietary, components of your system, such as your database server, memcached, and so on. For example, a dedicated database server box will see the DB server eat up all the RAM available: this is intentional, as it can cache more data in-memory and improve performance.
Other things to consider: