Webサーバーを運営していれば、一度は遭遇するであろう、「接続出来ない」という問題。どのような環境であっても、サービスを継続できないということは、Webサイトの信頼性に関わる重大なことです。
エラーコードを確認する
Webページに接続したときに運良くエラーコードが表示された場合は、アプリケーションエラーを疑います。大抵の場合は、アプリケーションの内部エラーに起因する「500 Internal Server Error」が表示されていると思いますが、他にもいくつかエラーコードがあります。サーバー管理の視点から代表的なものをいくつか以下に挙げます。
エラーコード | 内容 | 疑われること |
---|---|---|
403 | アクセス権限不足 | パーミッションが変更された |
404 | ファイルが存在しない | バッチ処理などでファイルが削除された、Webページが改ざんされた、HTTPサーバーの設定が変更された |
500 | 内部エラー | アプリケーションで例外などが発生している |
503 | サービス利用不可 | アクセス過多など |
他に400 bad request
や502 bad gateway
などもよく見ますが、bad requestはユーザー起因のケースが多く、今回は割愛します。bad gatewayはHTTPサーバーやプロキシサーバー起因のケースが多いので、次節で解説します。
サーバーログを確認する
Apacheに代表されるHTTPサーバーは、通常、/var/log
ディレクトリ配下にログが出力されます。Apacheであれば、アクセスログ以外にエラーログなどが個別で出力され、問題解決の手助けとなります。
前述した502 bad gateway
については、WebアプリケーションのエラーよりこちらのHTTPサーバーを疑うべきところです。エラーログに何か手掛かりがあるかもしれませんし、エラーがなければ、もっと外部の経路で何かが起こっていることが推理できます。
もっとも、その時点で完全な原因の特定が出来るとは限りません。しかし、有力な情報を手にできるということの意味は、一度でも障害調査にあたった方ならよくわかるはずです。
ファイアウォールを確認する
HTTPエラーが表示されず、ブラウザ側のエラー、例えばchromeでの「このウェブページにアクセスできません」などのエラーが発生する場合、ネットワークの経路に問題があります。DNSの名前解決ができていない などの原因もありますが、ファイアウォールの設定が誤っている可能性があります。
一例として、iptablesなどは、非常に癖のあるファイアウォールです。なんとか苦労して設定しても、サーバーを再起動すると全て水の泡…などといったことも少なくありません。
初歩的なミスですが、初歩的であるがゆえに、最も見逃してしまいやすいことではないでしょうか?
(番外)ドメインを確認する
ネームサーバーに何らかの異常が起きているかもしれません。こういった場合は、nslookupを利用してドメインのIPアドレスを確認するほか、外部からサーバーのグローバルIPを直打ちして確認します。
nslookupで得たIPアドレスが正しくないか、グローバルIPの直打ちでサイトが確認できた場合は、DNSキャッシュが古い可能性があります。ドメイン設定を見直しても繋がらない場合は、暫く(1時間ほど)待機してみましょう。
最後に
障害対応時は、時間との戦いになることが多いですが、焦らずひとつずつ原因を潰していくことが大切です。
案外、単純なエラーほど見つけにくいものです。一度確認したところも、二度、三度と確認するうちに突破口が見えるかもしれません。
ネットワークの経路を追っていけば、必ず原因特定に至ることができます。諦めずにエラーを追って行きたいものですね。