このトピックでは、Elastic Compute Service (ECS) インスタンスで実行中の、アクセスできない Web サイトのトラブルシューティング方法について説明します。
症状
ECS インスタンスで実行中の Web サイトにアクセスしようとすると、次の問題が発生する場合があります。
-
「No ICP filing or not connected」または「The website content does not match the ICP filing information」などのメッセージが表示される。
-
ブラウザーが 403、404、502、503 などの HTTP ステータスコードを返す。
-
新しく作成した Web サイトにアクセスできない。
-
正常に実行されていた Web サイトに突然アクセスできなくなる。
-
Server Load Balancer (SLB) インスタンス経由で ECS インスタンス上の Web サイトにアクセスできない。
-
Alibaba Cloud CDN で高速化された Web サイトにアクセスできない。
-
Web Application Firewall (WAF) で保護されている Web サイトにアクセスできない。
原因
ECS インスタンス上の Web サイトにアクセスできなくなる原因は多数あります。このセクションでは、一般的な原因を一覧で示します。実際の原因は、トラブルシューティングの結果によって異なります。
-
TCP ポート 80 が利用できない。
-
Web サービスが利用できない。
-
Web サイトに ICP 登録がない。
-
Web サイトのリソースまたはバックエンドサービスの問題。
-
Web サイトが標準的な手順に従って構築されていない。
-
オリジンサーバーの問題。
Web サイトのアクセスに関する問題には多くの原因が考えられます。詳細については、「ECS インスタンスのアクセス例外に関するトラブルシューティングとガイドライン」をご参照ください。
トラブルシューティング
トラブルシューティングを行うには、次のいずれかの方法を選択してください。
フローチャートによるトラブルシューティング
フローチャートの手順に従って、問題のトラブルシューティングを行うことができます。

症状別の解決策
以下にリストされている各症状の解決策を参照してください。
-
メッセージ:「No ICP filing or not connected」または「The website content does not match the ICP filing information」。
Web サイトの IP アドレスまたはドメイン名の ICP 登録を取得するまで、Web サイトへのアクセスは有効になりません。詳細については、「一般的な ICP 登録」をご参照ください。
-
ブラウザーが 403、404、502、503 などの HTTP ステータスコードを返す。
ブラウザーがステータスコードを返す場合、通常はクライアントとサーバー間のネットワーク接続は安定していることを示しますが、Web サイトのリソースまたはバックエンドサービスに問題があることを示します。
-
新しく作成した Web サイトにアクセスできない。
標準的な手順に従って Web サイトを構築してください。Web サイトの構築手順の詳細については、「Web サイト構築のクイックスタート」をご参照ください。
-
正常に実行されていた Web サイトに突然アクセスできなくなる。
Web サービスとバックエンドデータベースが実行されていることを確認してください。サービスが実行されていない場合は、ログでエラーメッセージを確認し、それに基づいて問題を修正してください。
説明-
Web サービスのログファイルは、通常 access.log または error.log という名前です。詳細については、お使いの Web サービスの公式サイトにアクセスしてください。
-
PHP、Java、Tomcat、データベースなどのバックエンドサービスの問題が原因で、Web サイトにアクセスできなくなる場合もあります。この場合は、Web サイトの管理者にお問い合わせください。
-
-
SLB インスタンス経由で ECS インスタンス上の Web サイトにアクセスできない。
ECS インスタンスで SLB インスタンスを使用している場合、問題は SLB インスタンスのリスナー設定が正しくないことが原因の可能性があります。詳細については、「SLB インスタンスを使用して ECS インスタンス上の Web サイトにアクセスできない」をご参照ください。
-
Alibaba Cloud CDN で高速化した後に Web サイトにアクセスできない。
まず、問題がオリジンサーバーにあるかどうかを判断してください。詳細については、「Alibaba Cloud CDN を有効にした後の Web サイトアクセス障害のトラブルシューティング」をご参照ください。
-
WAF で保護されている Web サイトにアクセスできない。
まず、問題がオリジンサーバーにあるかどうかを判断し、次に WAF がリクエストを誤ってブロックしたかどうかを確認してください。詳細については、「WAF によって保護されている Web サイトにアクセスできない」をご参照ください。
ソリューション
このセクションでは、TCP ポート 80 または Web サービスが利用できない場合に発生する問題の解決策について説明します。
Linux:ポート 80 と Web サービス
以下の手順では、CentOS 7 インスタンスを例として使用します。操作はオペレーティングシステムによって異なる場合があります。
TCP ポート 80 が利用できない
-
Linux インスタンスに接続します。
詳細については、「接続方法」をご参照ください。
-
次のコマンドを実行して、サービスが TCP ポート 80 をリッスンしているかどうかを確認します。
netstat -an | grep 80コマンドが次のいずれかの出力を返す場合、Web サービスが実行され、TCP ポート 80 でリッスンしています。異なる出力またはエラーが表示された場合は、「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 できる場合のポート接続の問題のトラブルシューティング」をご参照ください。
-
-
ECS インスタンスに十分な帯域幅があるかどうかを確認します。
詳細については、「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コマンドを実行して、インスタンスの実行ステータスを確認します。異常なプロセスがないか確認します。次のコードブロックは、コマンド出力のサンプルを示しています。
top - 16:03:47 up 21:22, 2 users, load average: 0.01, 0.02, 0.05 Tasks: 101 total, 1 running, 100 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 7732780 total, 6633068 free, 208044 used, 891668 buff/cache KiB Swap: 0 total, 0 free, 0 used. 7276512 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1685 root 10 -10 140444 18232 11472 S 1.0 0.2 18:40.04 AliYunDun 1371 root 10 -10 42320 4492 2988 S 0.3 0.1 0:46.65 AliYunDunUpdate 1 root 20 0 191048 4084 2612 S 0.0 0.1 0:01.74 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 5 root 20 0 0 0 0 S 0.0 0.0 0:00.35 kworker/u8:0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:10.57 rcu_schedload averageの値0.01、0.02、0.05は、それぞれ過去 1 分、5 分、15 分間の平均システム負荷を表します。一般的に、ロードアベレージを論理 CPU の数で割った値が 5 を超える場合、システムが過負荷になっている可能性があります。このしきい値は、サーバーの CPU パワーとワークロードによって異なる場合があります。システムが過負荷の場合は、%CPU値が高いプロセス ID (PID) を特定します。次に、COMMAND列でプロセス名を見つけ、システムのニーズに基づいて対応してください。 -
コンソールでインスタンスの監視情報を表示します。
詳細については、「インスタンスの監視情報を表示」をご参照ください。
-
インスタンスに十分な CPU とメモリがあるかどうかを確認してください。不足している場合は、「Linux ECS インスタンスの高い CPU 使用率のトラブルシューティング」をご参照ください。
-
インスタンスに十分な帯域幅があるかどうかを確認してください。不足している場合は、インスタンスの帯域幅をアップグレードしてください。詳細については、「帯域幅設定の変更」をご参照ください。
-
-
次のコマンドを実行して、インスタンスのポート 80 に TCP 接続が多すぎるかどうかを確認します。
netstat -anp | grep ':80 ' | grep tcp以下はレスポンスのサンプルです。
xxx@linux:~# netstat -anp |grep 80 |grep tcp tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2551/nginx: master tcp 0 0 xxx.xxx.xxx.174:36646 xxx.xxx.xxx.70:80 TIME_WAIT - tcp 0 0 xxx.xxx.xxx.174:51426 xxx.xxx.xxx.70:80 TIME_WAIT - tcp 0 0 xxx.xxx.xxx.174:34034 xxx.xxx.xxx.70:80 TIME_WAIT - tcp 0 0 xxx.xxx.xxx.174:42812 xxx.xxx.xxx.xxx:80 ESTABLISHED 1633/AliYunDun tcp6 0 0 :::80 :::* LISTEN 2551/nginx: master xxx@linux:~# netstat -anp |grep 80 |grep tcp |wc -l 6 -
次のコマンドを実行して、TIME_WAIT 状態の TCP 接続数をカウントします。
netstat -anp | grep TIME_WAIT | wc -l -
TIME_WAIT状態の TCP 接続数を/etc/sysctl.confファイルのnet.ipv4.tcp_max_tw_bucketsパラメーターの値と比較します。TIME_WAIT状態の TCP 接続数がこの値を超える場合は、次の手順を実行してください。-
vi /etc/sysctl.confコマンドを実行して/etc/sysctl.confファイルを開き、net.ipv4.tcp_max_tw_bucketsパラメーターの値を確認します。vm.swappiness = 0 kernel.sysrq = 1 net.ipv4.neigh.default.gc_stale_time = 120 # 詳細については、 https://www.alibabacloud.com/help/knowledge_detail/39428.html をご参照ください net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 # 詳細については、 https://www.alibabacloud.com/help/knowledge_detail/41334.html をご参照ください net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_slow_start_after_idle = 0TCP 接続数が多く、制限を超える可能性が高いことを確認した場合は、要件に基づいて
net.ipv4.tcp_max_tw_bucketsパラメーターの値を増やしてください。 -
sysctl -pコマンドを実行して、新しい設定を適用します。
-
Windows:ポート 80 と Web サービス
以下の手順では、Windows Server 2012 R2 が実行されているインスタンスを例として使用します。実際の操作はオペレーティングシステムによって異なる場合があります。
TCP ポート 80 が利用できない
-
Windows インスタンスに接続します。
詳細については、「接続方法」をご参照ください。
-
コマンド プロンプトを開きます。
-
デスクトップの左下隅にある [スタート] アイコン
をクリックし、[検索] アイコン
をクリックします。 -
検索ボックスに
cmdと入力します。 -
[コマンド プロンプト] をクリックします。
コマンド プロンプトウィンドウが開きます。
Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. All rights reserved. C:\Users\Administrator>
-
-
次のコマンドを実行して、サービスが TCP ポート 80 をリッスンしているかどうかを確認します。
netstat -ano | findstr :80コマンドが次のいずれかの出力を返す場合、Web サービスが実行され、TCP ポート 80 でリッスンしています。異なる出力またはエラーが表示された場合は、「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コマンドを実行して、すべてのネットワークインターフェイスでリッスンするようにサービスを再設定してください。 -
TCP ポート 80 でのトラフィックが許可されており、接続が安定していることを確認します。
-
インスタンスのセキュリティグループがポート 80 でのトラフィックを許可しているかどうかを確認します。許可されていない場合は、セキュリティグループルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。
-
インスタンスのオペレーティングシステムのファイアウォールが有効になっているかどうかを確認します。有効になっている場合は、無効にして代わりにセキュリティグループを使用することを推奨します。詳細については、「Windows インスタンスのファイアウォールポリシーの設定」をご参照ください。
-
telnet および tracert コマンドを使用して、ポート 80 の接続をテストします。詳細については、「サーバーに ping できる場合のポート接続の問題のトラブルシューティング」をご参照ください。
-
-
ECS インスタンスに十分な帯域幅があるかどうかを確認します。
詳細については、「Windows インスタンスの高いまたは完全な帯域幅と CPU 使用率のトラブルシューティング」をご参照ください。
帯域幅が不足している場合は、インスタンスの帯域幅をアップグレードしてください。詳細については、「帯域幅設定の変更」をご参照ください。
Web サービスが利用できない
-
Windows インスタンスに接続します。
詳細については、「接続方法」をご参照ください。
-
Web サービスのログを確認します。
-
方法1:ログフォルダーを参照する。
Windows Server 2008 R2 以降の場合、ログパスは
C:\inetpub\logs\LogFilesです。 -
方法2:インターネット インフォメーション サービス (IIS) マネージャーを使用する。
-
> [Windows 管理ツール] > [インターネット インフォメーション サービス (IIS) マネージャー]の順に選択します。 -
Web サイトのホームページで、[IIS] セクションの [ログ] をダブルクリックします。次に、[操作] ペインで [参照] をクリックします。
-
[ログ] ページで、必要に応じてログの保存パスを変更できます。パスをコピーし、[エクスプローラー]に貼り付けて
Enterキーを押します。その後、[エクスプローラー]でログフォルダーを表示できます。
-
-
-
タスク マネージャーを使用してインスタンスのステータスを確認し、異常なプロセスを探します。
-
デスクトップを右クリックし、[タスク マネージャー] を選択します。
-
[プロセス] タブをクリックします。
タスク マネージャーでプロセスの CPU とメモリの使用状況を表示して、異常なプロセスを特定できます。
-
-
コンソールでインスタンスの監視情報を表示します。
詳細については、「インスタンスの監視情報を表示」をご参照ください。
-
インスタンスに十分な CPU とメモリがあるかどうかを確認してください。不足している場合は、「Windows インスタンスの高いまたは完全な帯域幅と CPU 使用率のトラブルシューティング」をご参照ください。
-
インスタンスに十分な帯域幅があるかどうかを確認してください。不足している場合は、インスタンスの帯域幅をアップグレードしてください。詳細については、「帯域幅設定の変更」をご参照ください。
-
-
インスタンスのポート 80 に TCP 接続が多すぎるかどうかを確認します。
-
コマンド プロンプトを開きます。
-
デスクトップの左下隅にある [スタート] アイコン
をクリックし、[検索] アイコン
をクリックします。 -
検索ボックスに
cmdと入力します。 -
[コマンド プロンプト] をクリックします。
コマンド プロンプトウィンドウが開きます。
Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. All rights reserved. C:\Users\Administrator>
-
-
-
次のコマンドを順番に実行して、さまざまな状態の TCP 接続をカウントします。
netstat -n |find /i "time_wait" /c netstat -n |find /i "close_wait" /c netstat -n |find /i "established" /cデフォルトでは、Windows は 49152 から 65535 までの 16,384 個の動的ポートを許可します。
CLOSE_WAIT状態の接続数がこの制限に近づくと、多くの接続が適切に解放されていないことになります。その場合は、次の手順で説明するようにレジストリを変更してTcpTimedWaitDelayの期間を短縮してください。C:\Users\Administrator>netstat -n |find /i "time_wait" /c 10 C:\Users\Administrator>netstat -n |find /i "close_wait" /c 0 C:\Users\Administrator>netstat -n |find /i "established" /c 7 C:\Users\Administrator> -
レジストリ エディターを開きます。
-
デスクトップの左下隅にある [スタート] アイコン
をクリックし、[検索] アイコン
をクリックします。 -
検索ボックスに
regeditと入力します。 -
[regedit] をクリックします。
レジストリ エディターウィンドウが開きます。
-
-
レジストリ エディターで、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parametersに移動します。TcpTimedWaitDelayキーの値を 10 進数の30に設定してください。TcpTimedWaitDelayエントリが存在しない場合は、レジストリエントリを作成してからその値のデータを変更してください。たとえば、TcpTimedWaitDelayエントリが存在しない場合は、次の手順を実行します。-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parametersパスで、空の領域を右クリックし、[新規] > [DWORD (32ビット) 値] を選択します。 -
TcpTimedWaitDelayと入力してEnterキーを押します。 -
TcpTimedWaitDelayキーを右クリックし、[修正] をクリックします。 -
表示されるダイアログボックスで、[10進数] を選択し、[値のデータ] を
30に設定します。 -
[OK] をクリックします。
-