0

Actionhero 服务器有时会收到 502 错误。actionhero 服务器配置为 AWS ECS,称为 AWS ALB。

我正在寻找一种设置 headersTimeout 的方法,因为我听说它可以防止 502 中的错误。

如何在 actionherojs 中设置 keepAliveTimeout 和 headersTimeout?

或者,有没有办法在调用 aws alb 时避免 502 错误?

在 express.js 示例中

const server = app.listen(port);
server.keepAliveTimeout = time;
server.headersTimeout = time;
4

1 回答 1

0
  • 如果问题更具体一点就好了。

见官方参考。

https://www.actionherojs.com/tutorials/web-server
https://www.actionherojs.com/tutorials/websocket-server

        // websocket Server Options:
        server: {
          // authorization: null,
          // pathname:      '/primus',
          // parser:        'JSON',
          // transformer:   'websockets',
          // plugin:        {},
          // timeout:       35000,
          // origins:       '*',
          // methods:       ['GET','HEAD','PUT','POST','DELETE','OPTIONS'],
          // credentials:   true,
          // maxAge:        '30 days',
          // exposed:       false,
        },

在 websocket 服务器超时的情况下存在,但 web-server 中没有选项。

如果您希望进程(服务器)仅运行一段时间,请参见下文

const cp = require('child_process')
const path = require('path')

// Create the child
let child = cp.fork(path.join(__dirname, './actionhero.js'), [])

// Kill after "x" milliseconds
setTimeout((x) => {
  child.kill()
}, x);

负载均衡器参考中的 AWS 502 错误:https ://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

HTTP 502: Bad gateway 可能的原因:

负载均衡器在尝试建立连接时收到来自目标的 TCP RST。

  • 负载均衡器在尝试建立连接时收到来自目标的意外响应,例如“ICMP Destination unreachable (Host unreachable)”。检查是否允许从负载均衡器子网到目标端口上的目标的流量。

  • 当负载均衡器对目标有未完成的请求时,目标关闭了使用 TCP RST 或 TCP FIN 的连接。检查target的keep-alive时长是否小于负载均衡器的idle timeout值。

  • 目标响应格式错误或包含无效的 HTTP 标头。

  • 负载均衡器在连接到目标时遇到 SSL 握手错误或 SSL 握手超时(10 秒)。

  • 已取消注册的目标正在处理的请求的取消注册延迟期已过。增加延迟时间,以便完成冗长的操作。

  • 目标是 Lambda 函数,响应正文超过 1 MB。

  • 目标是一个 Lambda 函数,在达到其配置的超时之前没有响应。

于 2020-12-08T07:20:30.350 回答