本文介紹無法訪問ECS執行個體中運行網站相關問題的快速排查方法。
問題描述
您在訪問ECS執行個體中啟動並執行網站時,可能會遇到如下問題:
提示“未備案或未接入”、“網站內容與備案資訊不符”。
瀏覽器提示“403”、“404”、“502”、“503”等數字類錯誤。
首次搭建網站且無法訪問網站。
網站持續運作時突然無法訪問。
無法通過Server Load Balancer訪問ECS執行個體中的網站。
無法訪問CDN加速後的網站。
無法訪問通過Web Application Firewall(WAF)防護的網站。
問題原因
無法訪問ECS執行個體中啟動並執行網站的原因較多,此處列舉較為常見的問題原因,具體原因以現場的排查結果為準。
TCP 80連接埠不可用。
Web服務不可用。
網站未備案。
網站資源或後端服務存在異常。
建站流程不標準。
來源站點本身的問題。
引髮網站訪問異常的相關因素及癥狀很多,如果您需要瞭解更多ECS執行個體中網站無法訪問的原因,請參訪問ECS執行個體異常時的問題排查和指引。
排查方法
無法訪問ECS執行個體中運行網站的現象和原因較多,您可以選擇下列任意一種方法快速排查問題。
通過流程圖排查
您可以根據如圖所示的流程圖,逐步排查問題。
通過問題現象選擇解決方案
針對如下列舉的常見問題現象,您可以快速選擇對應的問題解決方案。
提示“未備案或未接入”、“網站內容與備案資訊不符”。
無論網站是通過IP地址還是通過網域名稱對外提供服務,未備案成功前,均不允許開通網站訪問服務。請備案您的網站IP或網域名稱,具體操作,請參見通用網站備案。
瀏覽器提示“403”、“404”、“502”、“503”等數字類錯誤。
瀏覽器提示數字類錯誤時,通常表明用戶端與服務端的網路是正常的,但網站資源或後端服務存在異常,具體操作,請參見訪問ECS執行個體中運行網站常見狀態代碼的報錯分析。
首次搭建網站且無法訪問網站。
請確保您按照標準的建站流程進行操作。更多建站流程資訊,請參見建站零基礎入門。
網站持續運作時突然無法訪問。
您需要對網站Web服務或後端資料庫分別進行檢查,確保Web服務和後端資料庫處於運行狀態。如果未運行,請檢查日誌並根據日誌中的錯誤資訊進行修複。
說明網站服務的記錄檔名一般為access.log或error.log,更多資訊,請參見網站服務對應的官網網站。
網站服務後端的PHP、Java、Tomcat、資料庫等服務異常時,也會導致無法訪問網站。此時,請聯絡您的網站管理員擷取協助。
無法通過Server Load Balancer訪問ECS執行個體中的網站。
ECS執行個體前端有Server Load Balancer時,可能是SLB執行個體的監聽原則設定異常,具體操作,請參見無法通過Server Load Balancer訪問ECS執行個體中的網站。
無法訪問CDN加速後的網站。
您需要先判斷是否為來源站點本身的問題,具體操作,請參見使用CDN加速後網站無法訪問的排查步驟。
無法訪問通過Web Application Firewall(WAF)防護的網站。
您需要先判斷是否為來源站點本身的問題,再判斷是否為WAF誤攔截問題,具體操作,請參見無法訪問通過Web Application Firewall(WAF)防護的網站。
解決方案
本文介紹常見的TCP 80連接埠和Web服務不可用導致該問題的解決方案,操作步驟如下:
TCP 80連接埠和Web服務不可用導致無法訪問Linux執行個體上啟動並執行網站
以下操作步驟以CentOS 7作業系統為例,具體操作請以您的實際作業系統為準。
TCP 80連接埠不可用
遠端連線Linux執行個體。
具體操作,請參見串連方式概述。
執行以下命令,查看TCP 80連接埠是否被監聽。
netstat -an | grep 80
回顯樣本如下,如果返回以下任意一種結果,說明已啟動TCP 80連接埠的Web服務,即檢查正常。如果有異常,請參見Web服務不可用進行處理。
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN # 全網監聽
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN # 本機監聽
說明本機127.0.0.1監聽會導致外網無法訪問Web服務,只有本機能訪問,修改為全網監聽。
查看TCP 80連接埠是否被允許存取以及連通情況是否正常。
查看執行個體安全性群組是否允許存取TCP 80連接埠,如果沒有允許存取則需要添加安全性群組規則,具體操作,請參見添加安全性群組規則。
查看執行個體作業系統的防火牆是否開啟,如果開啟則建議關閉防火牆改為使用安全性群組,具體操作,請參見開啟或關閉Linux執行個體中的系統防火牆。
使用telnet和traceroute命令跟蹤TCP 80連接埠的連通情況,具體操作,請參見能夠ping通伺服器的同時連接埠不通的排查方法。
查看雲端服務器頻寬是否充足。
具體操作,請參見Linux執行個體系統負載的查詢及分析。
如果不足,可嘗試升級執行個體頻寬。具體操作,請參見修改頻寬配置。
Web服務不可用
遠端連線Linux執行個體。
具體操作,請參見串連方式概述。
查看Web服務日誌。
執行如下命令,查看Apache的錯誤記錄檔。
您可以根據錯誤記錄檔分析排查問題。
CentOS或Alinux:
less /var/log/httpd/error_log
Ubuntu:
less /var/log/apache2/error.log
執行如下命令,查看Nginx的錯誤記錄檔。
您可以根據錯誤記錄檔分析排查問題。
less /var/log/nginx/error_log
執行
top
命令,查看執行個體運行狀態。您需要查看進程是否異常,回顯樣本如下。
load average
參數中0.01
、0.02
和0.03
分別表示1分鐘前、5分鐘前和15分鐘前到現在的系統負載平均值。一般情況下,如果這個數值除以邏輯CPU的數量大於5(具體數值需要根據實際伺服器CPU處理能力以及系統使用方式而定),則表示系統在超負荷運轉。此時,您可以根據進程列表中查看%CPU
較高的PID,定位異常進程即COMMAND
參數值,然後根據您的系統實際情況處理該異常。在控制台查看執行個體監控資訊。
具體操作,請參見查看執行個體監控資訊。
查看執行個體CPU、記憶體是否充足,如果不足,請參見Elastic Compute Service Linux系統CPU佔用率較高問題排查思路進行處理。
查看執行個體頻寬是否充足,如果不足,可嘗試升級執行個體頻寬。具體操作,請參見修改頻寬配置。
執行如下命令,查看執行個體的80連接埠是否有過多的TCP串連。
netstat -anp |grep 80 |grep tcp
回顯樣本如下。
執行以下命令,統計TCP的所有串連數。
netstat -anp |grep tcp |wc -l
將TCP的所有串連數與
/etc/sysctl.conf
設定檔中net.ipv4.tcp_max_tw_buckets
參數的最大值進行對比,如果TCP的所有串連數超出該最大值,則執行如下操作:執行
vi /etc/sysctl.conf
命令,編輯/etc/sysctl.conf
設定檔,查詢net.ipv4.tcp_max_tw_buckets
參數。如果確認TCP的串連數使用很高,容易超出限制,則根據實際情況,增加
net.ipv4.tcp_max_tw_buckets
參數值的大小。執行
sysctl -p
命令,使配置生效。
TCP 80連接埠和Web服務不可用導致無法訪問Windows執行個體上啟動並執行網站
以下操作步驟以Windows Server 2012 R2作業系統為例,具體操作請以您的實際作業系統為準。
TCP 80連接埠不可用
遠端連線Windows執行個體。
具體操作,請參見串連方式概述。
開啟CMD命令提示字元。
單擊案頭左下角表徵圖,然後單擊表徵圖。
在搜尋方塊輸入
cmd
。單擊命令提示字元。
進入命令提示字元。
執行以下命令,查看TCP 80連接埠是否被監聽。
netstat -ano | findstr :80
回顯樣本如下,如果返回以下任意一種結果,說明已啟動TCP 80連接埠的Web服務,即檢查正常。如果有異常,請參見Web服務不可用進行處理。
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1172 # 表示全網監聽 TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 1172 # 表示本地監聽
說明本機127.0.0.1監聽會導致外網無法訪問Web服務,只有本機能訪問,可執行
netsh http delete iplisten ipaddress= 127.0.0.1:80
命令,修改為全網監聽。查看TCP 80連接埠是否被允許存取以及連通情況是否正常。
查看執行個體安全性群組是否允許存取80連接埠,如果沒有允許存取則需要添加安全性群組規則,具體操作,請參見添加安全性群組規則。
查看執行個體作業系統的防火牆是否開啟,如果開啟則建議關閉防火牆改為使用安全性群組,具體操作,請參見Windows Server系統的ECS執行個體防火牆策略的配置方法。
使用telnet和tracert命令跟蹤80連接埠的連通情況,具體操作,請參見能夠ping通伺服器的同時連接埠不通的排查方法。
查看雲端服務器頻寬是否充足。
具體操作,請參見Windows執行個體頻寬和CPU跑滿或跑高排查。
如果不足,可嘗試升級執行個體頻寬。具體操作,請參見修改頻寬配置。
Web服務不可用
遠端連線Windows執行個體。
具體操作,請參見串連方式概述。
查看Web服務日誌。
方法一:瀏覽記錄檔夾。
Windows Server 2008 R2及以上版本作業系統的日誌路徑為:
C:\inetpub\logs\LogFiles
。方法二:查看IIS管理器。
選擇 > Windows管理工具 > Internet Information Services((IIS)管理器。
在待查看的Web服務首頁IIS地區,單擊日誌,然後在操作列單擊瀏覽。
在日誌頁面,按照您的實際情況修改日誌存放路徑並複製對應地址粘貼到檔案總管,然後按
Enter
鍵。您可以在檔案總管中查看對應記錄檔夾。
通過工作管理員查看執行個體運行狀態,查看是否有異樣進程。
在案頭單擊滑鼠右鍵,然後選擇工作管理員。
單擊進程頁簽。
您可以在工作管理員中查看進程的CPU、記憶體資訊,定位異常進程。
在控制台查看執行個體監控資訊。
具體操作,請參見查看執行個體監控資訊。
查看執行個體CPU、記憶體是否充足,如果不足,請參見Windows執行個體頻寬和CPU跑滿或跑高排查進行處理。
查看執行個體頻寬是否充足,如果不足,可嘗試升級執行個體頻寬。具體操作,請參見修改頻寬配置。
查看執行個體80連接埠是否有過多的TCP串連。
開啟CMD命令提示字元。
單擊案頭左下角表徵圖,然後單擊表徵圖。
在搜尋方塊輸入
cmd
。單擊命令提示字元。
進入命令提示字元。
依次執行以下命令,統計TCP串連數。
netstat -n |find /i "time_wait" /c netstat -n |find /i "close_wait" /c netstat -n |find /i "established" /c
預設動態連接埠的數量為16384個(從49152起始,到65535結束),如果
close_wait
數量接近動態連接埠的數量,則表示存在大量的close_wait
串連未釋放,您需要執行下一步,修改註冊表來降低Time Wait時間。開啟登錄編輯程式。
單擊案頭左下角表徵圖,然後單擊表徵圖。
在搜尋方塊輸入
regedit
。單擊regedit。
進入登錄編輯程式。
在登錄編輯程式的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services>Tcpip>Parameters
路徑下,將登錄機碼TcpTimedWaitDelay
的數值資料設定為十進位數值30
。如果
TcpTimedWaitDelay
項不存在,請建立對應登錄機碼,然後再修改數值資料。以TcpTimedWaitDelay
不存在為例,操作如下:在登錄編輯程式的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services>Tcpip>Parameters
路徑下,按右鍵登錄機碼空白地區,然後選擇建立(N) > DWORD (32 位)值。輸入
TcpTimedWaitDelay
,按Enter
鍵。按右鍵登錄機碼
TcpTimedWaitDelay
,然後單擊修改。在對話方塊中,勾選十進位,然後將數值資料設定為
30
。單擊確定。