App runs slow when multiple users accessing simultaneously

Hi @jay_pio,

Thanks for posting!

I’ll share some helpful thoughts that @tim posted in this thread:

Streamlit scales differently than your typical web app. The big difference is that, when a user connects to Streamlit, we spin up a thread just for them and run your app.py script for that user. And then Streamlit will re-run that script for that user each time they do something interactive (like pressing a button or sliding a slider); and each time the script is re-run, we spin up and down a thread again to run it. This is all to say, Streamlit itself is multi-threaded (so you’ll benefit from running it on a machine with lots of beefy cores), and its scaling challenges come from the CPU/GPU/memory costs of running Streamlit app scripts very frequently.

I’m not a web-scaling expert by any means, but what this means is that traditional scaling solutions (like putting a caching server in front of your app) probably won’t have the same result for your Streamlit app.

To help your Streamlit app scale, you’ll want to focus on having your app.py script run quickly and efficiently. The best tool to start with is probably Streamlit’s built-in caching utility , which is all about not re-running code that doesn’t need to be re-run!

I’d also recommend checking out these discussions:

Caroline :balloon: