Things to consider when load testing your web application

Purpose

This document provides a checklist when performing load testing or performance enhancements on back-end systems.

Checklist for servers

Consider the following for each server in the architecture:

  1. Is CPU 100% Utilized during load testing?
  2. Is memory 100% Utilized during load testing?

Checklist for the database server ( In case of PostgreSQL)

Consider the following:

  1. is the max_connection in “postgresql.conf“ > users?
    1. i.e in case the number of concurrent users is 300, can the database have 300 connection open at the same time?
    2. Noting that this is not a rigid rule, for the following reasons:
      1. because some applications open multiple threads to be able to serve only one request
        1. and in this case, X number of connections will be needed for each user, then 300 * X connections will be needed to the database server.
      2. and in some other cases, the application can respond in less than 1 second for the same request
        1. and in this case, the number of connections to the database can be less than 300

Checklist for the database connection pool

Consider the following:

  1. Since each database connection pool has min and max number of connections configuration
  2. is the min number of connection > users?
  3. Always set max number of connections == min when doing the load testing, to be able to let the load testing results be configurable.

Checklist for the application server thread pool

Consider the following:

  1. Since each application server has a thread pool for serving requests, and has min and max number of threads configuration
  2. is the min number of connection > users?
  3. Always set max number of connections == min when doing the load testing, to be able to let the load testing results be configurable.

Checklist for the Hardware specifications for servers

Consider the following:

  1. are hardware specifications exactly as requested or not? and in terms of the following
    1. CPU Cores
    2. RAM Available
    3. Hard disk storage and speed (HDD, Standard SSD or Premium SSD)

Checklist for the Hardware specifications for the load testing Machine

Consider the following:

  1. are hardware specifications exactly as requested or not? and in terms of the following
    1. CPU Cores
    2. RAM Available
    3. Hard disk storage and speed (HDD, Standard SSD, or Premium SSD)
  2. is CPU 100% utilized during load testing?
  3. is memory utilization 100% during load testing?