0

在 ECS 上部署 Laravel Web 应用程序,为了启用自动缩放,我正在使用 Application Load Balancer。该应用程序工作(和扩展)完美,直到我介绍了一个重量级的页面,大约504 Gateway Timeout一分钟后我开始出现错误。

我很确定单个 Web 服务器具有更高的超时时间(在本地测试应用程序时不会发生这种情况),因此问题一定与 AWS 环境(ECS / ALB)相关。

您可以在下面找到 ALB 设置的片段

AdminLoadBalancer:
  Type: AWS::ElasticLoadBalancingV2::LoadBalancer
  Properties:
    SecurityGroups:
      - !Ref 'AlbSecurityGroup'
    Subnets:
      - !Ref 'PublicSubnetAz1'
      - !Ref 'PublicSubnetAz2'
    Scheme: internet-facing
  Name: !Join ['-', [!Ref 'AWS::StackName', 'lb']]
4

1 回答 1

0

经过一些尝试,我解决了设置idle timeout负载均衡器属性的问题,正如理论上解释的here,因为单个ECS任务没有任何问题。在 Cloudformation 中,添加参数的属性设置即可,并将默认值翻倍即可。

AdminLoadBalancer:
  Type: AWS::ElasticLoadBalancingV2::LoadBalancer
  Properties:
    LoadBalancerAttributes:
      - Key: 'idle_timeout.timeout_seconds'
        Value: 120
    SecurityGroups:
      - !Ref 'AlbSecurityGroup'
    Subnets:
      - !Ref 'PublicSubnetAz1'
      - !Ref 'PublicSubnetAz2'
    Scheme: internet-facing
  Name: !Join ['-', [!Ref 'AWS::StackName', 'lb']]
于 2019-09-04T15:28:00.593 回答