I'm a bit green to web applications although I am in the final phases of developing one for a client. I'm using Django with Gunicorn/Nginx on an AWS m1.medium. The database (MongoDB) is on a separate instance. The client is paranoid about scaling and so I threw together a crude monitoring server which has the ability to spin up new AWS instances, install the app code and load balance (I know, I know, I could have used ELB. I said I was green, and it was fun writing it anyway).

The question is, I don't really know what metrics I should be aware of. How will I know when my app server is under 'high load'? CPU? RAM? Request latency? All of the above?

Any guidance in this area would be appreciated.

1 Answer 1


High load is too high when either software is unstable, or users start to notice latencies, whichever comes first. You should know your usage pattern, and build load tests based on it. Pick the bottleneck factor (cpu, ram, io) and fire up instances at 80% of the peak value, to handle spikes. Also you start/shutdown them before busiest/most idle times of the day.

  • Thanks. Based on my stack, what would you guess my metrics should tell? How would I load test this? May 30, 2013 at 16:06
  • It depends heavily on what your system do. Can't guess. Do you compress video? Or increase a lone counter? (just kidding) If you don't know your load you wasting time in premature optimisation. You can't place a metric on an idle system.
    – zoigo
    May 30, 2013 at 19:12
  • (can't edit previous one) Use top for cpu, iotop for io monitoring. You will know overload and how the system handels it when you rack load test enough up.
    – zoigo
    May 30, 2013 at 19:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.