Estimating server / wifi AP user capacity

Hi everyone. We’re testing different setups with the goal of supporting 100 simultaneous logged-in users over wifi. Results have been mixed, see below. If anyone has any experience or wisdom on such an implementation, or on how to estimate capacity, it’d be much appreciated.

Aside, our server is running Windows at the moment. Does anyone know if running linux would make a significant difference?

1 x Dell PowerEdge T30 server; 3.3 GHz, 8GB DDR, 1TB Hard drive.
2 x AP devices
1 x MicroTik router-board
60 meters of cable

From the tech guys on the ground:

We had two AP devices installed to accommodate the larger numbers. We tested with 100 learners; 50 learners per AP; unfortunately the test didn’t go as well as we’d hoped it would. The network slowed at 30 learners per AP, and was inaccessible at 40 - 50 learners per AP.

After discussion, and some trouble-shooting from the technicians, it was concluded that either the MicroTik router-board is the “weak link” or a more powerful server is required.

Thanks
Josh

Hi @remolacha!

What’s your CPU and memory consumption on the server during peak times?

I would expect that your bottleneck is the AP.

Does anyone know if running linux would make a significant difference?

Yes, in the sense that you can install KA Lite with Nginx proxying static content in front. This will free up a lot of resources since streaming videos won’t be handled by the kalite Python process. If you install ka-lite-raspberry-pi on Ubuntu/Debian/Raspbian, you will have Nginx configured automatically for this behaviour. After that, you can tweak things regarding the SQLite database (“pragmas”) and the number of Nginx workers to match your system - please refer to these projects’ documentations for more information.

Hey @remolacha ,
I am having the same issues as you have faced.
Have you found any fix to resolve the problem.

My installation is as follows
Client device: 55 laptop (Acer Aspire A515-51 -> core i3 7th gen with 4gb of RAM)
Server device: 1 desktop (Acer Aspire Veriton -> core i5 6th gen with 4gb RAM and 1TB HDD)
Router: Tenda AC15(all device connected on 5ghz network)
Kalite: 0.17.4 with almost 110GB English content
OS: Ubuntu 16.04 (on the server device), win10 (on client device)

imho, i don’t think there is any hardware or network bottleneck in my setup.
Because when all the user just wants to login at the same time (which is typical at classroom environment) kalite isn’t even accessible(i mean it takes 3-5 min just to login) in main device where its installed. The CPU is idling at 20-30% and 1.5-2gb of RAM is occupied when at peak load.
@benjamin can you please direct me to a link where can find some tweaks that you are mentioning.

Provided that you are using the ka-lite-raspberry-pi package, I would suggest editing the Nginx setting worker_processes to match the number of CPUs in your device. You find the file in /etc/nginx/sites-available/kalite.conf, and it has a lot of other settings, too.

Ref: https://github.com/learningequality/ka-lite-installers/blob/master/debian/debian/nginx.conf#L10

Nginx documentation: https://nginx.org/en/docs/

As for the Pragmas for SQLite, those were implemented but unfortunately not documented by @aronasorman - you can find more info here: https://github.com/learningequality/ka-lite/pull/5225 -

Maybe there is knowledge to be shared from other implementations about these tweaks, thanks for sharing yours! :slight_smile:

@benjamin Thank you for your quick reply.
just to let you know i installed kalite from the downloaded installer (ka-lite-bundle_0.17.4-0ubuntu2_all.deb).
And there is no ngnix configuration for kalite(which is usual i guess).
So should i do a brand new installation using the ka-lite-raspberry-pi package or can i configure my current installation?

You can safely sudo apt-get remove ka-lite-bundle and install the other one. The data for your installation is saved separately from the software.

Hi rifatbd. That sounds like a different problem…our issue, chunky video, was solved by adding more APs.