为什么我访问 http 或 https 时,ec2 实例总是在大约 60 秒内超时?大约 60 秒后总是返回:
网络错误(tcp_error)
发生通信错误:“操作超时”Web 服务器可能已关闭、太忙或遇到其他问题,导致无法响应请求。您可以稍后再试。
如需帮助,请联系您的网络支持团队。
有时还会返回:
网关超时
网关未收到来自更新服务器或应用程序的及时响应。
我使用 apache web 服务器和 PHP,并设置了最大超时时间。我在 EC2 中不使用 ELB/负载均衡器,也从未创建过任何 ELB。我尝试在互联网上寻找解决方案,但总是发现 ELB 设置。
答案1
在您的 apache/vhost 配置中,您需要将 Timeout 指令设置为所需的超时值。
https://httpd.apache.org/docs/2.4/mod/core.html#timeout
描述:服务器在请求失败之前等待某些事件的时间量
句法:超时秒数
默认:超时 60
语境:服务器配置,虚拟主机
答案2
根据本文我只需要运行下面的命令
/sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
我尝试过并且没有工作,但在我编辑/etc/sysctl.conf
并添加以下代码后:
net.ipv4.tcp_keepalive_time=200
net.ipv4.tcp_keepalive_intvl=200
net.ipv4.tcp_keepalive_probes=5
然后我重新启动了我的实例,现在超时时间更长了。