Can Streamlit Community Cloud Handle Hundreds of Users at once?

I have made a custom chatbot with Streamlit and deployed it on the community cloud that lets users reflect on their own beliefs based on GPT4, to test the hypothesis that this kind of reflection weakens belief in conspiracy theories over time. To do so, I want to send a couple of thousand survey participants to the app from the survey and check a few months later how their views have developed compared to a control group. I have tested this yesterday with just 20 participants, and the participants report that performance was bad, some could not finish the interaction with the bot. I think this is because participants all rush in at the same time, and that exceeds the resourcing of the instance. In full deployment, there could be at the peak hundreds of people using the app at the same time, for a very short time.

I was wondering whether there is any way to increase the resources for the app, or whether I need to deploy it somewhere else. I have absolutely no idea about cloud deployment, so am hoping there are ways of giving more resources to the app on the community cloud, but could not find options in the app.

Hey @marco2meyer,

We’re able to offer increased resources for apps used by educational or nonprofit organizations. Shoot me a DM if this applies and we can get that process going for you. I can also look up the memory usage of your app if you can share the URL, if you want to confirm that memory usage is the culprit/get an idea of what level of resources you may need for your app.

2 Likes

Hi @Caroline ,

Thank you so much for your reply, this is really appreciated.

TL;DR:

  • Here is the app: http://streetgpt.streamlit.app/?password=Pilot1-10XQ8bSl – give it a go if you have a minute, it is fun!
  • The way it is deployed now the app could not handle 10 people using it at the same time, and for the research study to work it needs to be able to support 100+ people using the chatbot simultaneously.

Let me briefly explain why I need the resourcing so that many people can run the app at the same time, and what this is all about anyway.

I am a researcher at the University of Hamburg, and this is an educational app to help people reflect on your own beliefs. I research this because reflection about the reasons for why we hold our political or moral beliefs may be one of the most effective ways of changing one’s mind, and my research group hopes that this can help address issues like polarization and conspiracy theorizing.

If you run it without additional arguments, you can select the belief you want to reflect on yourself. However, we plan to run it as part of a representative survey of the US population on conspiracy beliefs, which gathers data on what proportion of people believes which kinds of conspiracies, testing more than 70 such theories. We’ll randomly select a conspiracy theory a given respondent endorses – for instance ‘Climate change is a hoax perpetrated by corrupt scientists and politicians.’ – and pass it to the app as a URL parameter, I which case it invites participants to a friendly chat about this specific belief. We hope that we find in waves 2 and 3 that those who interacted with the chatbot will become less convinced of the conspiracy theory compared to a control group.

The survey works such that a panel of participants is invited to complete the survey. We’ll survey 4000 people overall over the course of a week, three times. My experience is that once the survey is released, a bunch of people, at peak perhaps 100+, start responding at the same time. As a result, they will also all be redirected to the app at the same time, leading to a crunch for the server on which the app is deployed. When I ran a test yesterday with 20 people, of which about 10 people answered simultaneously, for about half of them the app froze and they could not complete the task.

I have absolutely no idea how to think about the resourcing the app would need. I asked a friend who works on backend and he said RAM is the likely culprit, and that he thinks this should be deployed on one “large” machine or two in parallel with a “load balancer”, in which case he’d recommend 2x 4GB RAM – but he has little context so this may be way off, and I understand barely what he is talking about.

Does that help? Thank you for helping me looking into this!

All best,
Marco

Hey @marco2meyer, thanks for sharing all that info! I just sent you a DM on getting the resources set up

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.