R блестящий: чтение ECONNRESET Случайно возникает ошибка

Почти все время работает приложение, но ошибка возникает случайным образом, и я не могу найти трассировку ошибки в журнале приложений (/var/log/shiny-server):

An error has occurred
The application exited unexpectedly.
read ECONNRESET

SessionInfo() выглядит следующим образом:

R version 3.4.3 (2017-11-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux buster/sid

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_3.4.3

И мало информации об этой проблеме с приложением R Shiny, может быть, дело в node.js? Спасибо за любой совет заранее.


person Samoth    schedule 22.04.2020    source источник
comment
Возможно, вы захотите включить свой sessionInfo() и воспроизводимый пример вашего приложения. Вы обновили все свои пакеты, R/RStudio?   -  person Tonio Liebrand    schedule 28.04.2020
comment
Вы видели эту проблему?   -  person SeGa    schedule 28.04.2020
comment
@SeGa: Да, видел, но до сих пор не могу понять.   -  person Samoth    schedule 28.04.2020
comment
@TonioLiebrand: я развернул приложения с блестящим сервером, и в нем случайным образом возникают ошибки, но локально они работают нормально. Я могу предоставить свой sessionInfo() завтра, спасибо за ответ.   -  person Samoth    schedule 28.04.2020
comment
Самот, я думаю, вы вряд ли получите большую помощь с чем-то воспроизводимым. Некоторые из нас (многие?) имеют возможность разместить блестящее приложение на своем собственном сервере (например, shinyapps.io, блестящий сервер или rstudio connect) и попытаться углубиться в проблему. Однако без примера приложения с соответствующим чем-то, что вызывает сбой, мы ничего не можем протестировать. (Если это просто приложение «Hello World», которое в конечном итоге ломается на вашем сервере, я предлагаю вам предоставить hello_world.R. Но не слишком много, пожалуйста.)   -  person r2evans    schedule 30.04.2020
comment
@r2evans: я бы хотел, чтобы мое приложение подключалось к БД, которая находится в моей компании. Можно ли придумать минимально воспроизводимый код? Большое спасибо за ваш ответ и совет.   -  person Samoth    schedule 30.04.2020
comment
Вам не нужно делиться этим приложением. Можете ли вы сделать минимальное приложение, которое по-прежнему истекает по тайм-ауту и ​​выдает эту ошибку? Это может занять некоторое время (сделайте версию, пусть она установится... без ошибок, затем добавьте DB-соединение, пусть она установится... без ошибок, добавьте что-то еще). Дело в том, что мы понятия не имеем, как выглядит ваше приложение, поэтому мы не можем воспроизвести что-то близкое к вашему. Таким образом, вам не нужно ничего делать, но... когда не на что смотреть, маловероятно, что кто-то спонтанно придумает что-то близкое к вашему (и, вероятно, ваша награда не будет присуждена).   -  person r2evans    schedule 30.04.2020
comment
@r2evans: Хорошо, дайте мне подумать, как сделать минимальное приложение; самое сложное в том, что эта ошибка возникает случайным образом, поэтому я не знаю, может ли минимальный пример воспроизвести ошибку или нет. Но я попробую, спасибо за ваше время.   -  person Samoth    schedule 30.04.2020
comment
Я полностью понимаю, у меня были такие проблемы в прошлом (и до сих пор, честно говоря). В этом случае, если никто другой не скажет Я знаю, как воспроизвести это, то, к сожалению, ответственность лежит на вас. Удачи, мы все на тебя рассчитываем :-)   -  person r2evans    schedule 30.04.2020
comment
Звучит как загадочная ошибка, вы также можете попробовать обновить Shiny Server? Они выпускают довольно регулярные патчи. Вы также можете попробовать переключиться на другую версию R и попробовать ее. Вы также можете попробовать добавить ведение журнала в свое приложение, это может помочь точно определить общую область кода, где происходит сбой. Удачи.   -  person firefly2442    schedule 01.05.2020
comment
@firefly2442: Спасибо за ответ. На самом деле я использую образ сервера Docker Shiny для развертывания приложений, можно ли обновить сервер Shiny для моего случая?   -  person Samoth    schedule 01.05.2020
comment
У вас наверное последняя. Я думаю, вы всегда можете запустить что-то вроде docker-compose build --pull, чтобы убедиться, что вы используете последнюю версию.   -  person firefly2442    schedule 01.05.2020


Ответы (1)


Наконец, я решил это, добавив приведенный ниже код в server.r.

onStop(function() {
  odbcClose(conn)
})

Я часто запрашиваю данные из базы данных, но не закрываю ее. После добавления кода для закрытия соединения ошибка возникает редко.

И я также настраиваю app_idle_timeout на 0 в /etc/shiny-server/shiny-server.conf

person Samoth    schedule 19.05.2020