Hi, We've recently set up a load-balanced JupyterHub at the University of Auckland for teaching. Notebook servers are spawned in Docker or more precisely through the Rancher API (Rancher is a container management platform). We developed our own Rancher spawner for that. At the moment we support around 300 notebook servers/students. Currently we pre-spawn notebook servers for students through the API so that a student's notebook server is already up and running when he/she comes to the hub. This all works very well and services are reliable, lecturers (and I) are happy how smooth things go.
Soon we want to scale to 1000-2000 users, and because we have limited hardware resources in our Rancher platform we need to shut down notebook servers that are unused (culling). If we do that we need to ensure that we can handle 50-100 concurrent requests to start notebook servers if all students of a class want to start and use their notebooks at the same time. We recently did some load testing to see how many concurrent requests to start a notebook server can be handled by JupyterHub. Submitting concurrent start requests through the JupyterHub Rest API we see that in a hub there is only one instance of the spawner.start() method running at any time, so if there are 10 concurrent requests these requests are processed sequentially. Once spawner.start() finishes for one request, spawner.start() is run for the next request. Checks to wait for the notebook servers to come up seem happen asynchronously, but not the spawner.start() method (i think this is all controlled by spawn_single_user() in base.py). Doing a Rancher API call to bring up a notebook server and waiting for the endpoint (ip and port) to become available takes up to 5 seconds in our environment, so the sequential processing of spawner.start() we see is a problem for us. For now my question is: Can an instance of JuypyterHub execute spawner.start() for more than one request at a time? Please correct me on any mistaken views. I'm happy to provide the relevant code snippets of our Rancher spawner (we haven't made if available yet) and more details. Thanks, Martin -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/6d8834a0-52d8-4e0a-964e-3d447ba33bc9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
