Linux

ec2 實例總是在大約 60 秒內超時?

  • June 28, 2019

為什麼我訪問 http 或 https 時,我的 ec2 實例總是在大約 60 秒後超時?大約 60 秒後總是返回:

網路錯誤 (tcp_error)

發生通信錯誤:“操作超時” Web 伺服器可能已關閉、太忙或遇到其他問題,使其無法響應請求。您可能希望稍後再試一次。

如需幫助,請聯繫您的網路支持團隊。

有時會返回:

網關超時

網關沒有收到來自更新伺服器或應用程序的及時響應。

我使用最大超時的 apache web 伺服器和 PHP。我沒有在我的 EC2 中使用 ELB/負載均衡器,也從未創建任何 ELB。我試圖在網際網路上找到解決方案,但總是找到 ELB 設置。

根據這篇文章,我只需要執行下面的命令

/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

然後我重新啟動了我的實例,現在超時時間更長了。

在您的 apache/vhost 配置中,您需要將 Timeout 指令設置為所需的超時值。

https://httpd.apache.org/docs/2.4/mod/core.html#timeout

說明:伺服器在請求失敗之前等待某些事件的時間量

語法:TimeOut 秒

預設值:TimeOut 60

上下文:伺服器配置,虛擬主機

引用自:https://serverfault.com/questions/973204