Edjet LMS Server

Resources (hardware)

Before choosing the server and installing the system we recommend you to check basic system requirements and make a few hardware configuration decisions based on a some calculations.

  1. How many concurrent users you want/need to handle?
  2. What will be the character of the load? Peaks?
  3. What are the requirements for storage? I/O bandwidth, size, redundancy, speed (latency)?
  4. How many total data you expect to store? Videos? Hi-res photos?
  5. Are there any other specific issues? Public e-learning portal, public courses f.e.?

Based on this we should be able to decide:

  • how much RAM...
  • how many CPUs / cores – frequency, cache...
  • what disk type – SATA, SCSI, SSD...
  • what disk configuration – which RAID...
  • how many machines – one server, farm with load balancer, cloud solution...
¨

How much RAM?

Amount of the RAM has usually the biggest impact on the performance. So, get as much as you can. Of course, on the other hand, it is not economical to over-estimate the required memory. It can be very expensive mistake.

For calculating the RAM we need to estimate the number required concurrent users, the average size of processes (Apache and PostgreSQL process) combined in one HTTP request and the amount of RAM used by OS and other services.

Concurrent users

The load on the server at a particular time depends on the number of concurrent users.

Not on the total number of user accounts and not on the number of users logged-in. The term "concurrent users" is used to mean those users for whom the server is actively doing something – sending HTTP requests by clicking is the most often.

As the concurrent users activity is quite random, it is hard to measure and calculate with. So when calculating the exact concurrency is the only ways to strictly mean a number of active web server processes – concurrent processes.

Concurrent processes

Every user's click generates a HTTP request to the server and require an Apache sub-process, and, if the database is involved in the particular part of the application, also the PostgreSQL sub-process.

Each of which consume some memory and also it require an webserver connection and database connection.

Size of the processes

Edjet LMS is a quite complex application. One HTTP request, like a rendering a page with a course content, require approx. 40-75 MB of RAM. Statistically there is more processes of the more complex ones, so we calculate with the average size of the 68 MB*. This includes both Apache and PostgreSQL process.

* This is only informative. Environment used: Edjet LMS Server 3.6.1, Debian 6 with 24GB of memory. On different versions and different configs the size may wary. Windows Server processes size may be quite different! Please make your own investigation on this for your particular situation.

OS memory consumption

It depend on many things. Best way is to install configuration of your choice and see what are the demands.

For more info see:
Requirements and Environment setup for Linux
Requirements and Environment setup for Windows

For standard Linux distribution suitable for webserver, if you don't want to spent a time with this, use about the 1 GB per each 8 GB of installed memory.

Calculation

For 150 concurrent processes it is:
150 x 68 = 10.2 GB of RAM.

So your option will be probably 16 GB of RAM, so add more 2 GB for OS:
10.2 + 2 = 12.2 GB

And you have also some spare RAM for additional tasks like running backups f.e.

See following table for calculated estimates*:

=== tabulka ===

* for simplicity let's assume one physical server dedicated only to LMS

What storage?

Disk types
Fast SSD are the best option. In the cloud, you can set higher IOPS.

Disk configuration
If you don't have any specific requirements go with 4 SATA disk in RAID 10 (RAID 1+0).

What CPU?

More CPUs is better. But it is not only speed that matters. As the LAPP stack running on Unix machines is very well scaling using multi-threaded architecture, the biggest impact on performance has more cores (threads or vCPUs in cloud). This is most important namely for environment with high concurrency.

To understand the impact of number of cores and to see what is possible to handle with various configurations, please see the Performance test report chapter.

Related