概要
- 運用中のHPを開くと、しばらく待った後に「このサイトにアクセスできません xxxxxxxからの応答時間が長すぎます。」と出るようになってしまいました。先日まで普通に動いていたのに...
- 今回はそんな状況になった方のために、原因と解決策を記します。
前提
- サーバー(AWS EC2インスタンス)
- OS:Ubuntu 18.04.3 LTS
- Web Server:Apache/2.4.29
発生したこと
-
「インスタンスの接続性チェックに失敗しました」と表示されています。
-
エエェ、突然なんや(°_°)
原因の追求へ...スクリーンショットが役に立つ
- ここ最近、ネットワーク設定やルートテーブル、インターネット接続は特にいじっていないので、問題なさそう。
- ターミナルから入ろうとしても「Operation timed out」で途絶えてしまう。。。
- ということで、まずは、公式サイトにもある通り、EC2インスタンスのシステムログを確認
- 公式:ステータスチェックに失敗したインスタンスのトラブルシューティング
- [アクション]、[モニタリングとトラブルシューティング]、[システムログの取得] の順に選択。最後の記録は1ヶ月くらい前だし、特に関係ないメッセージしか残っていませんでした。え、ログで出てこないってどういうこと...
- 次に、EC2のデフォルト設定である「スクリーンショット」を試してみることに。これでEC2インスタンスにアクセスできない場合でも状態を把握できます。
- 「モニタリングとトラブルシューティング」>「インスタンスのスクリーンショットを取得」を選択。
- 参考記事:接続できないEC2へのトラブルシューティング記録【Windows】
- すると以下の画面が表示されました。
- あった、それっぽい原因があったぞ!
- Out of memoryとあるので、ほぼ間違いなくこやつが原因でしょう。メモリ不足が原因でアプリケーションが正常に動作できなくなったのです。
- まずは、インスタンスの再起動をします。再起動することで、一時的にメモリを解放することができるからです。
- すると、、正常にHPが表示されました!まずは、ヤッタァあーー!というところです!
- EC2インスタンスに表示されていた「インスタンスの接続性チェックに失敗しました」も消えました。
メモリ解放は暫定的な対策。抜本的な解決策は?
- しかし、上記の対策はあくまで一時的なメモリ解放です。今後のことを考えると、月に1回再起動でしのごう!とかより、メモリの増設が適切でしょう。ということで、インスタンスタイプの変更を行います(実施する場合は一応アクセスが少ない時間帯が良いと思われます)。
- インスタンスタイプを変更する際は、まず、インスタンスを停止します。
- その後、以下画面のように、[アクション] -> [インスタンスの設定] -> [インスタンスタイプの変更]を選択します。
- そして、変更したいタイプをプルダウンメニューから選択し「適用」を押します。
- あとは、インスタンスの開始をクリックしたら、これで完了。非常に楽ですね!
- メモリの確認をする場合は、コマンドラインで
free -h
と打つと、あとどれくらい使えるのかが表示されます。
他に考えられる原因
- ついでに調べたので、一応以下がその他に考えられる原因です。
- ネットワーク設定の問題(セキュリティグループやELBなど)
- インスタンスの問題
- ハードウェア障害(ホストの物理的な障害など)
- ソフトウェア障害(OSやアプリケーションのクラッシュなど)
- ストレージの問題(ストレージがいっぱい。今回はこれ)
- ルートテーブルの問題
- インターネット接続の問題
- ただ、大体の場合はシステムログにヒントがあるのではないでしょうか。