node.js - 30 秒后在前端超时(使用的技术 -Scala、akka、nginx 和 react/node js)
问题描述
我的申请流程是:
nginx = > react app = > nginx => akka http
在 30 秒内执行时,所有其他功能都可以正常工作。
我们创建了一个新的 API 来导出 csv 文件中的患者详细信息,这个导出请求需要 2.5 分钟才能执行。我们在这个应用程序中使用了以下技术:Scala、akka、nginx 和 react/node js 作为前端。
当我点击导出链接时,请求被执行并能够在日志中看到。但在浏览器控制台 GET /export/request 503(服务不可用)上出现错误 30 秒后,promise 块中出现 java 脚本错误。
如果我们尝试直接从 curl 命令访问 API(因为我们一直在使用加载患者数据),那么我们也可以从 TEST 站点导出数据(1.8 分钟)。后端没有超时或 503 问题(akka http)
我观察到所有 API 都会出现这个问题,如果它们的执行时间超过 30 秒,那么我们将在控制台上收到 503 错误。我们在添加 30 秒等待语句 [Thread.sleep(30sec)] 后测试观察到这一点
应用的解决方案:
- 在参考 akka 文档后,我将理想超时设置增加到 240 秒。
应用程序.conf:
http {
server {
request-timeout: 240s
idle-timeout: 240s
}
}
它适用于我的本地/开发环境。/export/ 请求在 2 分钟内执行。
在 TEST 环境中部署此更改后。问题仍然存在,30 秒后出现 503。在测试环境中。应用程序正在使用 docker env 运行。
请求流/应用程序设置:
内部 AWS 负载均衡器 => EC2 实例 => nginx 代理(清单:80)=> 前端应用程序(react js 应用程序)=> 后端(scala 和 akka)
将 nginx 从 1.9 升级到 1.21
经过详细分析,只有当请求来自前端代理(Nginx-Docker 映像)时才会出现此问题:在 nginx/default.conf 中微调所有超时参数,但仍然无法正常工作。
location / { proxy_set_header Host $http_host; proxy_read_timeout 100; proxy_connect_timeout 100; proxy_send_timeout 100; }
负载平衡器的时间从 60 秒增加到 700 秒。
以上所有解决方案均无效,下载 CSV 时仍出现 503 错误。
请帮我。
解决方案
推荐阅读
- python - python检查第一列名并从excel中检索输入
- testing - 异常 SpecFlow.Plus.Shared.Services.Activation.ActivationException
- macos - iTerm2 日志轮换
- tabs - 有没有办法垂直堆叠“标签”?
- ssl - 客户端通过 ROOT CA 签名的证书进行身份验证
- mysql - 使用 Jenkins 时与 MySQL 服务器 docker 容器的连接丢失
- telerik - Telerik RadTextBox XSS 过滤器问题
- c++ - png 未在 SDL 中正确呈现
- bash - 在 Ubuntu 中使用 bashrc 定义带循环的别名
- c# - .NET XmlSerializer:序列化时如何确保对象属性值中的空白作为重要空白?