posit::conf(2023)
Shiny in Production: Tools & Techniques
{shinyloadtest}
shinycannon
shinyloadtest_recording.R
recording.log
# version: 1
# target_url: https://my-lego-app.me/
# target_type: RStudio Server Connect
# rscApiKeyRequired: false
{"type":"REQ_HOME","begin":"2023-09-07T13:03:39.042Z","end":"2023-09-07T13:03:40.138Z","status":200,"url":"/"}
{"type":"REQ_GET","begin":"2023-09-07T13:03:40.332Z","end":"2023-09-07T13:03:40.502Z","status":200,"url":"/_w_${WORKER}/shiny-sass-1.7.5/shiny-sass.css"}
{"type":"REQ_GET","begin":"2023-09-07T13:03:40.517Z","end":"2023-09-07T13:03:40.678Z","status":200,"url":"/_w_${WORKER}/bslib-grid-styles-0.5.1/grid.css"}
{"type":"REQ_GET","begin":"2023-09-07T13:03:40.692Z","end":"2023-09-07T13:03:40.886Z","status":200,"url":"/_w_${WORKER}/bootstrap-5.2.2/bootstrap.min.css"}
...
...
{"type":"WS_SEND","begin":"2023-09-07T13:04:17.805Z","message":"[\"D#0|m|{\\\"method\\\":\\\"update\\\",\\\"data\\\":{\\\"n_parts_display\\\":\\\"20\\\"}}\"]"}
{"type":"WS_CLOSE","begin":"2023-09-07T13:04:35.561Z"}
bash
# A tibble: 80 × 13
run user_id session_id iteration input_line_number event start end time
<ord> <int> <int> <int> <int> <chr> <dbl> <dbl> <dbl>
1 Run 1 0 0 0 4 REQ_… 0 24.2 24.2
2 Run 1 0 0 0 5 REQ_… 24.2 24.5 0.259
3 Run 1 0 0 0 6 REQ_… 24.5 24.6 0.155
4 Run 1 0 0 0 7 REQ_… 24.6 24.9 0.284
5 Run 1 0 0 0 8 REQ_… 24.9 25.3 0.382
6 Run 1 0 0 0 9 REQ_… 25.3 25.5 0.170
7 Run 1 0 0 0 10 REQ_… 25.5 25.7 0.242
8 Run 1 0 0 0 11 REQ_… 25.7 25.9 0.25
9 Run 1 0 0 0 12 REQ_… 25.9 26.3 0.395
10 Run 1 0 0 0 13 REQ_… 26.3 26.5 0.198
# ℹ 70 more rows
# ℹ 4 more variables: concurrency <dbl>, maintenance <lgl>, label <ord>,
# json <list>
Record and analyze load-testing sessions with shinyCannon
and {shinyloadtest}