我对 AWS Elastic Beanstalk 上的 api 的请求在 60 秒后结束,我想增加它

问题描述 投票:0回答:1

我的 Web 应用程序正在 Elastic Beanstalk 上的负载均衡环境中运行。

我的一小部分请求需要 60 秒以上才能完成。

我做了以下事情:

  1. 我增加了负载均衡器属性上的“连接空闲超时”。
  2. 我在 Elastic Beanstalk 环境的配置选项卡上增加了“最大执行时间”。
  3. 我重新启动了应用服务器 Apache。

但是我的请求仍然在60秒结束。

如何克服这个问题?

我在想,也许重建一下环境?

php amazon-web-services request amazon-elastic-beanstalk connection-timeout
1个回答
0
投票

让我们观察如下流程:

Elastic Load Balancer --> Apache Webserver --> EC2 (with PHP deployment)

您提到大部分更改都是在 ELB 中进行的,但您仍然有 60 秒的超时时间。

有些地方也有您需要检查的配置,例如 Apache 配置。你可以尝试使用这个结构:

  1. 从部署包中创建一个文件夹和文件,如下所示:
.ebextensions/
  environment.config
  1. 从此
    example
    创建一个 httpd.conf 文件并将
    Timeout
    的值修改为高于 60。
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 120
  1. 将其上传到S3存储桶并检索文件的S3 URI。
  2. 编辑
    environment.config
    如下:
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Access:
          type: S3
          roleName: ec2-s3-access
          buckets: myphp-config
files:
  "/etc/httpd/conf/httpd.conf" :
    mode: "000664"
    owner: root
    group: root
    source: https://s3-ap-southeast-1.amazonaws.com/myphp-config/httpd.conf
    authentication: S3Access

确保 IAM 角色对您存储

httpd.conf
的 S3 存储桶具有 IAM 权限。

您可以检查的第二个地方是您的 ElasticBeanstalk

php.ini
执行时间设置,也可以使用此文件。

option_settings:
  - namespace: aws:elasticbeanstalk:container:php:phpini
    option_name: max_execution_time
    value: 120

完成后,您可以重新打包部署并将其再次上传到您的开发环境并执行测试。

© www.soinside.com 2019 - 2024. All rights reserved.