我在 EC2 实例上遇到问题。尝试上传文件时出现不同的行为:
- 文件大小约 1.5mb :文件已正确发送到服务器并由后端处理
- 文件大小约 2mb:
408 Timeout
- 文件大小大于 2mb:上传在大约 23 秒时冻结,我
ERR:CONNECTION_RESET
在控制台中收到一条消息
堆 :
- EC2 实例(不使用任何 ELB)
Docker 具有以下内容:
- httpd ( 2.4+ )
- 代理 php-fpm ( php7+ )
- 数据库
- redis(尚未使用)
我尝试了以下内容:
- 在 apache 中将TimeOut增加到120,KeepAlive On并将KeepAliveTimeout增加到 120
- 将LimitRequestBody和LimitXMLRequestBody增加到 25000000
- 调用php-fpm代理时在apache
ProxySet connectiontimeout=120 timeout=120
中的指令中添加Proxy
pm.process_idle_timeout = 120s
在php-fpm conf文件中设置- 增加了 php.ini 中所有可能的超时和文件大小参数
- 重建了超过一百次的 docker stack 并无数次地重启了实例
当然,这在本地工作得很好,但在 EC2 实例上却不行。
有想法吗?提前致谢
最后通过在 apache 中添加以下行解决了它:
RequestReadTimeout handshake=5 header=10 body=120
其中指定了请求的不同状态下的超时