My team has been developing an Angular app that allows access to a bunch of Bokeh apps. The Angular app lets users select apps, which get represented as cards on their dashboard. Clicking on a card opens an iframe, which points to the corresponding Bokeh app. Based on a couple threads in this list as well as my understanding of the examples such as stock_app.py, I import all apps from their respective files into a single file called run.py. For example, our “scholar attrition” app looks like this in run.py:
app = ScholarAttrition.create()
I have six apps in there right now. I then run it on bokeh-server (on Debian GNU/Linux 7.8) this way:
bokeh-server -m --ip xxx.xxx.xxx.xxx --port 5006 --backend redis --start-redis --script run.py
That hangs all of my apps at their respective paths (so the scholar_attrition app is at http://xxx.xxx.xxx.xxx:5006/apps/scholar_attrition).
Problem: The apps worked fine until we did a demo today to about 30 people. I showed them the app, they all promptly logged on, and an app that normally takes less than 2 seconds to load took 45 seconds.
We envision a situation in a few months where we’ll have a couple hundred people accessing the app at the same time, with about 2000 unique users. I would very much like to have the performance issue resolved by then, but I’m not sure how to proceed. I know that bokeh-server is still very much under active development. Is this expected behavior at this point? Can anyone suggest a workaround? We have a small team with primarily analytic skills - we’re learning the web development stuff as we go along, so I’m not even sure which questions to ask. Could the number of apps running on the same bokeh-server instance cause a bottleneck? The number of users? Could this be resolved by spinning up a new bokeh-server instance for each user (which would then necessitate opening more ports)? I know you’re working on a big refactor of bokeh-server, but any advice you could give me in the interim would be really appreciated.