Server Sizing and Monitoring

If you have installed the Oppia server from the AWS AMI machine, then you’ll notice this instance size is very small (t2.micro, so is eligible for the ‘Free Tier’ on AWS). Whilst this will be fine for some initial testing and setting up, it won’t be suitable for larger scale roll-outs.

There’s not a one-size fits all approach to determining what size of machine is most appropriate, so below we have given some areas to consider and an example case of a national roll-out.

Although we specifically mention AWS below, the same or similar will apply to other cloud server providers.

To consider

  1. How many daily active users are you expecting?

    The number of daily active users is more important to estimate than just the raw total number of users you expect to be registered. Since users who are registered but not actively using the app will put little or no load on the server.

  2. There will be peaks and troughs in usage levels

    Likely you will have peaks and troughs, for example if new or updated courses are released. However these might always been reflected in the course activity stats/graphs on the Oppia dashboard. For example, if you release several new courses, each with a lot of video content, then the server will experience quite a lot of load as the users download this content, even if they haven’t been using substantially yet.

  3. Do you have many courses and a lot of video content that users will be downloading?

    If you have a lot of courses, and/or a lot of video content that users will download, this will put a higher load on the server than the regular activity tracking once the users have the courses installed. If you are expecting a lot of users to start using the app on the same day, if would be good to increase the server size, to ensure they don’t have problems registering and downloading the courses

  4. What sort of promotional activities will you be doing?

    If you are planning promotional activities, think about increasing the server size before this promotional activity starts. You can always reduce the server size later on, when the activity has slowed down.

  5. Will you roll out gradually, perhaps to different areas/regions at different times?

    If you are rolling out gradually, then you are less likely to experience high peaks and troughs in the usage, as you might if rolled out nationally on one day.

Example case

Here is a real life example, following a national SMS campaign to promote the app, giving an idea of the number of users, course downloads and activity hits in the first few days following the promotion:

  • 2000 daily active users

  • 10,000 course downloads over 3 days (although most occurring on the launch day)

  • 250,000 course activity hits over 3 days

The server size used for this was an AWS m3.xlarge instance (4 vCPUs and 15Gb RAM), the CPU usage was below 50%.

Server monitoring alerts

We use 2 types of server monitoring:

AWS server monitoring

You can use AWS CloudWatch (https://aws.amazon.com/cloudwatch/) to set up many different types of monitoring, there are 2 main ones that we use:

  • Status alert checks - so if 2 status checks fail within 5mins, an alert email is sent

  • CPU over 70% - so if the CPU usage is over 70% for 5mins, again an email alert is sent

Updown.io website monitoring

We use Updown.io (https://updown.io/) to monitor the Oppia server urls. This is useful addition to the AWS server monitoring, if (eg) the webserver stops running, the AWS monitoring would not pick up on this.

Using a physical server

If you are using a physical server (or virtual server on your own hardware), then your IT admin team should be able to advise on what types of monitoring tools they already use, and can set up appropriately for you

Resizing an AWS instance

Changing the size of an AWS instance is straightforward and can be done with a few clicks on the AWS Management Console. The main thing to be aware of is that the server needs to be turned off whilst changing the server size.

You can view the various instance types available (and pricing) on the AWS site at: https://aws.amazon.com/ec2/.

The process is the same whether you are increasing or decreasing the server size.

  1. Sign in to the AWS console, at: https://aws.amazon.com

  2. Select “EC2” from the management console:

    ../../_images/console.png
  3. Select the “availability zone” where your server is installed - for most Oppia server instances this will be EU-West (Ireland), unless you have specifically installed in another zone. Then select ‘Instances’

    ../../_images/select-instances.png

    This image shows where you can select the availability zone (top right)

  4. Select the server you would like to resize, and select “Instance State” > “Stop instance”

    ../../_images/stop-instance.png
  5. Once the server is stopped, you can select “Actions” > “Instance Settings” > “Change instance type”

    ../../_images/change-type.png
  6. Select the instance type you would like to change to. Then click “apply”

    ../../_images/new-type.png
  7. Finally start the instance again, go to “Instance State” > “Start instance”

    ../../_images/start-instance.png
  8. Your updated server will be available again in a few minutes.