我的 Web 应用程序正在 Elastic Beanstalk 上的负载均衡环境中运行。
我的一小部分请求需要 60 秒以上才能完成。
我做了以下事情:
但是我的请求仍然在60秒结束。
如何克服这个问题?
我在想,也许重建一下环境?
让我们观察如下流程:
Elastic Load Balancer --> Apache Webserver --> EC2 (with PHP deployment)
您提到大部分更改都是在 ELB 中进行的,但您仍然有 60 秒的超时时间。
有些地方也有您需要检查的配置,例如 Apache 配置。你可以尝试使用这个结构:
.ebextensions/
environment.config
example创建一个
httpd.conf
文件并将 Timeout
的值修改为高于 60。#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 120
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
完成后,您可以重新打包部署并将其再次上传到您的开发环境并执行测试。