R Shiny App works great...until I deploy...then 'out of memory' message

Hi. I have a simple app. All it does is pull a small (1-2MB) image from a public google cloud storage bucket and display it on a simple map. Works great on its own. When I deploy, I get an out of memory error. The app is set to 'large' in the settings in shinyapps.io.

Here is the code:

# test the display of a GCS image.

library(shiny)
library(raster)
library(leaflet)

ui = fluidPage(
  
  titlePanel("MountainSnow Map"),
  helpText("Attempt to plot a raster"),
  fluidRow(
    column(12,
           leafletOutput(outputId = 'map'),
           fluidRow(
             column(12,
                    verbatimTextOutput("info")),
             fluidRow(
               column(12,
                      plotOutput("distPlot")),
                    )
                    )
        )
        )
)

server <- function(input, output) {
  
  tmp.url <- "/vsicurl/https://storage.googleapis.com/cso_test_upload/co_n_domain/swed_wi_assim/2023_04_01_swed_wi_assim.tif"
  ras <- raster(tmp.url)
  
  #ras <- writePNG(ras)
  
  #cont. colormap option
  #pal <- colorNumeric(c("#0C2C84", "#41B6C4", "#FFFFCC"), values(ras),
  #                    na.color = "transparent")
  #discrete colormap option
  pal <- colorBin(c("#0C2C84", "#41B6C4", "#FFFFCC"), values(ras), 6, pretty = TRUE,
                      na.color = "transparent")
  
  output$map = renderLeaflet({
    leaflet() %>%
      addTiles() %>%
      addRasterImage(ras, colors = pal, opacity = 0.8) %>%
      setView(lng = -110, lat = 40, zoom = 4) %>%
      addLegend(pal = pal, values = values(ras), title = "SWE (m)")
  })
  
}

# Run the application 
shinyApp(ui = ui, server = server)

And, here are the logs:

2023-04-07T20:01:31.281552+00:00 shinyapps[8793660]: Running on host: e870498d39ed
2023-04-07T20:01:31.283911+00:00 shinyapps[8793660]: Running as user: uid=10001(shiny) gid=10001(shiny) groups=10001(shiny)
2023-04-07T20:01:31.283931+00:00 shinyapps[8793660]: Connect version: 2023.03.0
2023-04-07T20:01:31.283934+00:00 shinyapps[8793660]: LANG: C.UTF-8
2023-04-07T20:01:31.283937+00:00 shinyapps[8793660]: Working directory: /srv/connect/apps/mtnsnow
2023-04-07T20:01:31.284120+00:00 shinyapps[8793660]: Using R 4.2.2
2023-04-07T20:01:31.284130+00:00 shinyapps[8793660]: R.home(): /opt/R/4.2.2/lib/R
2023-04-07T20:01:31.284359+00:00 shinyapps[8793660]: Content will use current R environment
2023-04-07T20:01:31.284365+00:00 shinyapps[8793660]: R_LIBS: (unset)
2023-04-07T20:01:31.284394+00:00 shinyapps[8793660]: .libPaths(): /opt/R/4.2.2/lib/R/library
2023-04-07T20:01:31.291511+00:00 shinyapps[8793660]: shiny version: 1.7.4
2023-04-07T20:01:31.291526+00:00 shinyapps[8793660]: httpuv version: 1.6.9
2023-04-07T20:01:31.291532+00:00 shinyapps[8793660]: rmarkdown version: 2.21
2023-04-07T20:01:31.291536+00:00 shinyapps[8793660]: knitr version: 1.42
2023-04-07T20:01:31.291552+00:00 shinyapps[8793660]: jsonlite version: 1.8.4
2023-04-07T20:01:31.291555+00:00 shinyapps[8793660]: RJSONIO version: (none)
2023-04-07T20:01:31.291559+00:00 shinyapps[8793660]: htmltools version: 0.5.5
2023-04-07T20:01:31.291630+00:00 shinyapps[8793660]: reticulate version: (none)
2023-04-07T20:01:31.291875+00:00 shinyapps[8793660]: Using pandoc: /opt/connect/ext/pandoc/2.16
2023-04-07T20:01:31.716573+00:00 shinyapps[8793660]: Starting R with process ID: '32'
2023-04-07T20:01:31.716962+00:00 shinyapps[8793660]: Shiny application starting ...
2023-04-07T20:01:31.737705+00:00 shinyapps[8793660]: Loading required package: sp
2023-04-07T20:01:37.687147+00:00 shinyapps[8793660]: Listening on http://127.0.0.1:37977
2023-04-07T20:01:47.252315+00:00 shinyapps[8793660]: Container event from container-7981853: oom (out of memory)
2023-04-07T20:08:16.756786+00:00 shinyapps[8793660]: Container event from container-7981872: start
2023-04-07T20:08:17.130165+00:00 shinyapps[8793660]: Running on host: 0957fa82c475
2023-04-07T20:08:17.142536+00:00 shinyapps[8793660]: Running as user: uid=10001(shiny) gid=10001(shiny) groups=10001(shiny)
2023-04-07T20:08:17.142564+00:00 shinyapps[8793660]: Connect version: 2023.03.0
2023-04-07T20:08:17.142567+00:00 shinyapps[8793660]: LANG: C.UTF-8
2023-04-07T20:08:17.142570+00:00 shinyapps[8793660]: Working directory: /srv/connect/apps/mtnsnow
2023-04-07T20:08:17.142828+00:00 shinyapps[8793660]: Using R 4.2.2
2023-04-07T20:08:17.142845+00:00 shinyapps[8793660]: R.home(): /opt/R/4.2.2/lib/R
2023-04-07T20:08:17.143090+00:00 shinyapps[8793660]: Content will use current R environment
2023-04-07T20:08:17.143097+00:00 shinyapps[8793660]: R_LIBS: (unset)
2023-04-07T20:08:17.143105+00:00 shinyapps[8793660]: .libPaths(): /opt/R/4.2.2/lib/R/library
2023-04-07T20:08:17.149581+00:00 shinyapps[8793660]: shiny version: 1.7.4
2023-04-07T20:08:17.149594+00:00 shinyapps[8793660]: httpuv version: 1.6.9
2023-04-07T20:08:17.149597+00:00 shinyapps[8793660]: rmarkdown version: 2.21
2023-04-07T20:08:17.149601+00:00 shinyapps[8793660]: knitr version: 1.42
2023-04-07T20:08:17.149607+00:00 shinyapps[8793660]: jsonlite version: 1.8.4
2023-04-07T20:08:17.149630+00:00 shinyapps[8793660]: RJSONIO version: (none)
2023-04-07T20:08:17.149643+00:00 shinyapps[8793660]: htmltools version: 0.5.5
2023-04-07T20:08:17.149657+00:00 shinyapps[8793660]: reticulate version: (none)
2023-04-07T20:08:17.149964+00:00 shinyapps[8793660]: Using pandoc: /opt/connect/ext/pandoc/2.16
2023-04-07T20:08:17.536378+00:00 shinyapps[8793660]: Starting R with process ID: '32'
2023-04-07T20:08:17.536772+00:00 shinyapps[8793660]: Shiny application starting ...
2023-04-07T20:08:17.557956+00:00 shinyapps[8793660]: Loading required package: sp
2023-04-07T20:08:19.185224+00:00 shinyapps[8793660]: Container event from container-7981853: stop
2023-04-07T20:08:22.891481+00:00 shinyapps[8793660]: Listening on http://127.0.0.1:34623
2023-04-07T20:08:32.219967+00:00 shinyapps[8793660]: Container event from container-7981872: oom (out of memory)

Hi,
Could you resolve it? Facing the same issue and lookin for work arounds.
thanks

When opening your administration page, in Settings > General, you can select the instance size. Make sure you use the biggest size available (I think free accounts are limited to "Large" with 1 GB).

When running on your computer, you can try monitoring memory to see how much is needed, that might help you see if upgrading to a slightly more expensive shinyapps.io tier could solve the problem.

In the end, you might have to determine which part of the code is using up the memory; in the original I guess it could be the maps (I don't know much about maps, I could be wrong), with other type of data there might be ways to use a database as a more efficient storage.

No solution yet, smruthi.

Alexis.
Thank you. I have upgraded to a higher tier, but this still did not solve it. The raster image that I am trying to display is modest in size (1-10MB). So the 'out of memory' message I get in the logs puzzles me still.

I reduced the datasets. I retained only the necessary columns and removed additional columns.
It works for me without an upgrade.

It's difficult to give a general answer, as that really depends on what you're doing. Even if the final raster image is small, maybe some intermediate steps are using up a lot of memory.

When running this code on your computer, can you see how much memory it uses? You can try using {profvis}, which gives you some estimates of memory, or just use your OS's task manager/resource monitor to look at what's happening. Both of these methods are not fully accurate, but give you an idea.

When I run your reprex code on my computer with profvis (not in a Shiny app), it looks like it's using 4.5 GB (but freeing up 3.5 GB), of these 3 GB in the call to addRasterImage(). So, following this, I tried adding project = FALSE, and indeed it strongly reduced the amount of memory needed (to 15 MB). This is also discussed here. Maybe that would help in your case?

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

If you have a query related to it or one of the replies, start a new topic and refer back with a link.