Best practices for on demand deployment

Dear Open Ondemand Community,

Georgia Tech PACE computing center is deploying OOD for our users. We are hesitant to open to the broader user community due to we don’t have a clear way to do scale test on how many concurrent users the server can support simultaneously.

I would like to seek any suggestions on what is the maximum connections each site can handle? What configuration we should modify to ensure the maximum connections can be handled?

Thanks

Fang (Cherry) Liu

Hi and welcome! I think the biggest thing is your apache’s MPM configurations. 4-8 cores maybe minimum (we’re not very CPU intensive). A lot of your RAM just ends up being cached files from the file editor. So it’s available, but not free. If I recall correctly PUNs are around ~300 MB.

Searching ‘mpm’ on this site gave me some hits

These 2 I think are the best:

and this one gives some monitoring tips too.

Just wanted to point out that at OSC we had about 5,200 individual active accounts in 2020. All our accounts are able to utilize our OnDemand instance and we’ve never had any major issues with performance of it. We detail the VM specs in the docs here: Requirements — Open OnDemand 2.0.13 documentation

We also have a classroom specific OnDemand instance, and as discussed in the thread Jeff linked to above, we are easily able to handle 200+ simultaneous client connections during scheduled classes to that instance.

Thanks, the information is really useful. At Georgia Tech, we might expect a class size of more than 300, based on the above the number, we need at least 40GB of memory.
Since we have some limitations on VM memory size, I am wondering if any site has experience to running ondemand service in a load banlance mode, e.g. multiple VMs behind the main URL.

I understand this is common practice in the Industry world, however in the case, user wants to come back to resum the work, how load banlancer hanlders the migration of PUN, or we need to develop an internal mapping host->PUN to make sure that user is assigned to the correct server when he/she logins back?

Any suggestion is welcome!

It may be easier to spin up multiple VMs and assign students to a fixed node based on something like course/section or even first two letters of last name. Since courses are of fixed duration, and VMs are ‘transient’, this might afford an administratively less complicated solution than trying to work out the details of load balancing and reassignment.

Just a thought.

You want ‘sticky sessions’. Different balancers may have different terminologies, but a quick google search for HAProxy showed they use this term with persistence.

In any case, any loadbalancer would support some sort of stickyness or session persistence based off of the user’s ip or a header. Whether they all use the same terminology I can’t say.

And yea as @bennet says, if you have the automation to spawn and configure VMs fairly easily - that may be the route to go.