微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

30 秒后在前端超时使用的技术 -Scala、akka、nginx 和 react/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 作为前端。

当我点击导出链接时,请求被执行并且能够在日志中看到。但在 30 秒后立即在浏览器控制台上出现错误 GET /export/request 503(服务不可用),承诺块中出现 java 脚本错误

如果我们尝试直接从 curl 命令访问 API(因为我们一直用于加载患者数据),那么我们也可以从 TEST 站点导出数据(1.8 分钟)。后端没有超时或 503 问题(akka http)

我观察到所有 API 都会出现这个问题,如果它们的执行时间超过 30 秒,那么我们将在控制台上收到 503 错误。我们已经测试在添加 30sec 等待语句后观察到这一点 [Thread.sleep(30sec)]

应用的解决方案:

  1. 参考 akka 文档后,我将理想超时设置增加到 240 秒。

application.conf:

http {
    server {
      request-timeout: 240s
       idle-timeout: 240s
    }
  } 

它适用于我的本地/开发环境。 /export/ 请求在 2 分钟内执行。

在 TEST 环境中部署此更改后。问题仍然是 30 秒后得到 503。在测试环境中。应用程序正在使用 docker env 运行。

请求流/应用设置:

内部 AWS 负载均衡器 => EC2 实例 => Nginx 代理(列表:80) => 前端应用程序(react js 应用程序)=> 后端(scala 和 akka)

  1. Nginx 从 1.9 升级到 1.21

  2. 经过详细分析,这个问题只有在请求来自前端代理(Nginx-Docker 镜像)时才会出现:在 Nginx/default.conf 中微调所有超时参数,但仍然无法正常工作。

     location / {
         proxy_set_header Host $http_host;
         proxy_read_timeout 100;
         proxy_connect_timeout 100;
         proxy_send_timeout 100;
     }
    
  3. 负载平衡器的时间从 60 秒增加到 700 秒。

以上所有解决方案都不起作用,下载 CSV 时仍然出现 503 错误

请帮帮我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。