Based on the edX experience, one its engineers, Ned Batchelder, has given a rough guideline:
“An LMS worker will support about 75 simultaneous active users. To be on the safe side, give each LMS worker 1Gb of RAM. When choosing an AWS instance model, RAM will be the bottleneck, not CPU. Use your active simultaneous user estimate to decide how many workers you need. Choose an AWS instance model: m2.2xlarge is a good choice. Divide the number of workers by the amount of RAM (30Gb for m2.2xlarge) to determine the number of instances you need”.
“As an example, suppose you estimate that you will have 800 active simultaneous users at your busiest time. 800/75 –> 10.6, so you will need 11 workers. You need 11Gb of RAM. This fits easily within a m2.2xlarge instance”.
Batchelder also recommends to allocate at least two AWS instances and start larger than you need –“you can scale it back once you see the real system under real load”.
In addition to the web workers, at least one more machine needs to be configured for the database.
– This website compares Amazon (AWS) EC2 instances.