Блестящее приложение работает значительно медленнее на блестящих серверах, чем локально - PullRequest
0 голосов
/ 12 мая 2018

Это исходный код моего приложения Shiny , отображающего полигоны более чем 350 городов на Тайване, когда есть какие-либо измененные входные данные из пользовательского интерфейса.Значения городов будут меняться каждый раз в зависимости от входных данных, поэтому есть мало возможностей сделать leafletProxy.Тем не менее, сейчас у меня проблемы с производительностью, особенно на Shiny Server.

Вы можете попробовать запустить приложение локально.Карта будет отображаться через 10 секунд после изменения параметров в пользовательском интерфейсе.Однако развернутое приложение в Google Compute Engine или в shinyapps.io занимает намного больше времени (около 30 секунд) для отображения карты не только при инициализации приложения, но и при каждомвремя входы изменены.Кроме того, Shiny Server часто отключается во время вычислений, как это:

App disconnected

Когда такое отключение происходит, /var/log/shiny-server.log говорит мне:

[INFO] глянц-сервер - Ошибка при получении работника: Ошибка: приложение завершилось во время инициализации.

, чего никогда не было локально.

Не делаеткакой-то смысл для меня.Как это возможно, что мой ноутбук бьет серверы?Мой ноутбук - MacBook Air (начало 2015 года) с процессором Intel Core i5 с тактовой частотой 1,6 ГГц и DDR3 с тактовой частотой 1600 ГГц и 8 ГБ, в то время как виртуальная машина на Google Compute Engine работает так плохо, даже если она имеет 4 виртуальных ЦП и 15 ГБ ОЗУ.

Как я могу выяснить причины плохой работы на Shiny Server или реорганизовать мои коды?


Может быть связано: Проблемы производительности Leaflet R с большой картой

1 Ответ

0 голосов
/ 13 мая 2018

Ну, во-первых, предварительной обработке не место в блестящем приложении. Зачем повторять что-либо каждый раз, когда кто-то использует приложение, если это можно сделать один раз, а затем этот сохраненный продукт можно загрузить.

Я бы посмотрел на следующие шаги:

  1. Удалите все, что можно сделать один раз снаружи (например, Ln 12 - 37)
  2. Упростите полигоны, чтобы уменьшить размер файла (более быстрая загрузка, сделайте это один раз и загрузите продукт)
  3. Все, что вы генерируете (метки и т. Д.), Которые повторяются, делайте один раз и сохраняйте в списке (например, metadata.rds) и считывайте один раз и ссылайтесь.

Иногда может показаться, что ваше приложение работает быстрее локально, потому что вы на самом деле не перезапускаете сессия при разработке - Shiny в основном запускает сессию для каждого пользователя (вроде).

...