ShinyProxy and shinyloadtest

I followed tutorial and setup shinyproxy instance on openstack. My goal was to test shinyloadtest R package - record some tests and rerun them with shinycannon (see webinar). So I run shinyloadtest::record_session(url_to_shinyproxy) and selected example app 06_tabsets from tutorial. Unfortunately I got blank page:

image

logs:

2018-09-10 16:34:23.017 DEBUG 12069 --- [ XNIO-2 task-10] o.s.b.w.s.f.OrderedRequestContextFilter  : Bound request context to thread: HttpServletRequestImpl [ GET / ]
2018-09-10 16:34:23.026 DEBUG 12069 --- [ XNIO-2 task-10] o.s.b.w.s.f.OrderedRequestContextFilter  : Cleared thread-bound request context: HttpServletRequestImpl [ GET / ]
2018-09-10 16:34:23.523 DEBUG 12069 --- [ XNIO-2 task-11] o.s.b.w.s.f.OrderedRequestContextFilter  : Bound request context to thread: HttpServletRequestImpl [ GET / ]
2018-09-10 16:34:23.535 DEBUG 12069 --- [ XNIO-2 task-11] o.s.b.w.s.f.OrderedRequestContextFilter  : Cleared thread-bound request context: HttpServletRequestImpl [ GET / ]
2018-09-10 16:34:28.335 DEBUG 12069 --- [ XNIO-2 task-12] o.s.b.w.s.f.OrderedRequestContextFilter  : Bound request context to thread: HttpServletRequestImpl [ GET /app/06_tabsets ]
2018-09-10 16:34:28.346 DEBUG 12069 --- [ XNIO-2 task-12] o.s.b.w.s.f.OrderedRequestContextFilter  : Cleared thread-bound request context: HttpServletRequestImpl [ GET /app/06_tabsets ]
2018-09-10 16:34:28.789 DEBUG 12069 --- [ XNIO-2 task-13] o.s.b.w.s.f.OrderedRequestContextFilter  : Bound request context to thread: HttpServletRequestImpl [ GET /app/06_tabsets ]
2018-09-10 16:34:28.795 DEBUG 12069 --- [ XNIO-2 task-13] o.s.b.w.s.f.OrderedRequestContextFilter  : Cleared thread-bound request context: HttpServletRequestImpl [ GET /app/06_tabsets ]
2018-09-10 16:34:41.225  INFO 12069 --- [tiveProxyKiller] e.o.c.service.HeartbeatService           : Releasing inactive proxy [user: M-6Dg1qqboYUfDI42-wfo_rV3NT786TW3vf0TM5J] [spec: 06_tabsets] [id: 296ebded-3de4-4313-be1b-1ba0630173ac] [silence: 29488ms]
2018-09-10 16:34:41.498  INFO 12069 --- [pool-2-thread-1] e.o.containerproxy.service.ProxyService  : Proxy released [user: M-6Dg1qqboYUfDI42-wfo_rV3NT786TW3vf0TM5J] [spec: 06_tabsets] [id: 296ebded-3de4-4313-be1b-1ba0630173ac]

As you can see there is no info in logs about running container. When I go directly to url to my instance and click:

06_tabsets

then there is info about running container:

2018-09-10 16:34:06.954 INFO 12069 --- [ XNIO-2 task-3] c.s.docker.client.DefaultDockerClient : Starting container with Id: bae6054ef6d8fd8768d0142abd57c5bfe53b053f0856d805b2a348512cb75eaf

Author of shinyloadtest said they don’t support ShinyProxy (https://github.com/rstudio/shinyloadtest/issues/52) but maybe you can help me with that from ShinyProxy side?

1 Like

Are there any new informations on it?
I would also find it quite interesting. Or did anyone try other open source load-testing applications, which work nicely in conjunction with ShinyProxy?

Thanks in Advance!

2 Likes

I am interested in shinyloadtest too. This is really good question.

Unfortunately, shinyloadtest doesn’t support shinyproxy. Please refer this github issue.

I use JMeter for load test… But It doesn’t run docker container.

Some other mothods are needed…

1 Like

I know this is an old thread. But are there any updates on this? It seems that shinyloadtest does not support shinyproxy still. But then how to actually do the load test? Please share any tutorials.

Hi

Usually when we do load testing, we make a difference between load testing ShinyProxy and load testing the app.
For load testing ShinyProxy, we have some advances scripts using k6 browser. With this we launch thousands of concurrent users. We also used this while creating this blog post: https://www.openanalytics.eu/blog/2025/08/19/shinyproxy-cost-effective-public-app/ .

When developing apps, we usually do load testing on the app outside of ShinyProxy, because this is done by the app developer, and usually before the app is deployed on ShinyProxy.
If you want to do load testing on a deployed app, you could try using the internal endpoint of the app. This endpoint is directly proxied by ShinyProxy, without an iframe. You can get the app id from the “app details” button and then the endpoint is /app_proxy/<id>/.

Note that this id is different, each time you start the application.