设置Shiny的app_idle_timeout无效果,寻求解决方法
解决Shiny应用持续活跃的问题
针对你在Ubuntu 22.04上修改app_idle_timeout后仍无法让Shiny应用保持活跃的问题,可按以下步骤排查解决:
确认配置文件的修改位置正确
app_idle_timeout需要放置在正确的配置块中才能生效:- 全局生效:放在
server块内的location段下,对所有应用生效 - 单个应用生效:针对特定应用单独配置
application块
示例配置(全局设置24小时超时):
server { listen 3838; location / { site_dir /srv/shiny-server; log_dir /var/log/shiny-server; app_idle_timeout 86400; # 单位:秒,24小时 } }- 全局生效:放在
修改配置后必须重启Shiny Server服务
修改配置文件后,执行以下命令重启服务,确保配置生效:sudo systemctl restart shiny-server可通过以下命令验证服务状态:
sudo systemctl status shiny-server检查是否存在其他超时配置干扰
若应用仍会休眠,需排查是否有其他超时设置冲突:- 检查
init_timeout(应用启动超时)是否设置过小 - 若使用反向代理(如Nginx),需同步调整代理的超时参数(如
proxy_read_timeout)
- 检查
定时请求唤醒应用(兜底方案)
若配置调整仍无效,可通过定时请求强制保持应用活跃:- 创建bash脚本
keep-shiny-alive.sh:
#!/bin/bash curl -s http://你的服务器IP:3838/你的应用路径 > /dev/null- 赋予脚本执行权限:
chmod +x keep-shiny-alive.sh- 通过crontab设置定时任务(例如每10分钟执行一次):
执行crontab -e添加以下内容:
*/10 * * * * /脚本所在路径/keep-shiny-alive.sh- 创建bash脚本
内容的提问来源于stack exchange,提问作者Egor
相关产品推荐
相关产品推荐

