オフラインアプリケーションの復旧
最終更新日 2023年06月14日(水)
Table of Contents
アプリケーションはいくつかの理由でダウンタイムが発生することがあります。 この記事は、この問題の理由と問題を修復するために実行できることを見つけるのに役立ちます。
アプリケーションログを確認する
最初のステップは アプリケーションのログ を確認することです。Heroku のエラーだけでなく、多くの一般的なアプリケーションエラーがアプリケーションログに出力されます。ログを表示するには、次のコマンドを実行します。
$ heroku logs
Ruby on Rails などの多くのフレームワークでは、エラーがあるときにアプリケーション用のデフォルトエラーページが提供されます。これを Heroku のエラーページ と比較することができます。後者は、Heroku のエラーコード が問題の原因である場合に使用されます。
Heroku のエラーコードの 1 つがログに表示されている場合、この問題の原因を調査する必要があります。これらのエラーの説明が、最適な出発点となります。
プロセスを確認する
プロセス形成の現在のステータスを確認します。
$ heroku ps
これにより、アプリケーションの dyno の現在の状態がわかります。実行中の各プロセスタイプの数が適切であること (最低 1 つ)、および dyno が正しく起動していることを確認します。
$ heroku scale web=1
dyno がクラッシュした場合、アプリを再起動すると問題のデバッグに役立つことがあります。
アプリケーションを再起動する
問題がすぐに現れない場合、アプリケーションを再起動し、ログの末尾を監視し、アプリケーションを Web ブラウザで表示してみてください。
$ heroku restart
$ heroku logs --tail
$ heroku open
一部のアプリケーションの問題は、再起動によって解決されます。たとえば、データベースのスキーマを変更した後や、最近の Heroku の保守 がアプリケーションに影響した場合にアプリケーションの再起動が必要な場合もあります。
curl を使用してテストする
いくつかの問題は curl を使用して検出できます。
$ curl -v http://example-app-1234567890ab.herokuapp.com/
カスタムドメイン以外に herokuapp.com
ホスト名をテストすると、問題がカスタムドメインまたはアプリケーションに固有であるかどうかの判別に役立ちます。
次のような一般的な問題が見つかる場合があります。
HTTP 500 のエラーコードは、アプリケーションによって返されるエラーを示します。詳細については Heroku のログを確認してください。
HTTP 503 のエラーコードは、Heroku のエラーコードを示します。ログを確認して受け取ったエラーコードがないか調べます。詳細については Heroku のエラーコードドキュメント を参照してください。
DNS エラー (
could not resolve host
) は、Heroku で使用する カスタムドメインの設定 を正しく行うことで解決する必要があります。SSL を使用している場合は別の説明が該当する ことに注意してください。証明書エラーまたは SSL の使用に関連する別のエラーについては、Heroku の SSL ドキュメント を参照する必要があります。
アプリケーションのヘルスを確認する
Heroku では、アプリケーションのヘルスを確認するためのツールがいくつか提供されています。
アプリケーションに加えられた最近の変更については、
heroku releases
で確認します。 必要に応じて 古いリリースにロールバック できます。New Relic などの監視アドオンは、アプリケーションのヘルスから目を離さないための優れたツールです。リクエストの受け取りや応答時間の大きな変化は、アプリケーションのスケール調整 または 大きいデータベースへの移行 を行う必要があることを示している場合があります。
本番環境アプリケーションのためのアドバイスを確認する
アプリケーションに影響を及ぼしている問題は、Heroku アプリケーションをプラットフォーム上で実行する方法を変更することによって、最も適切に軽減できる場合もあります。Production Check は、本番環境のプラットフォーム上での実行にアプリが対応していることを確認するための優れたツールです。
プラットフォームの状態を確認する
アクティブなインシデントまたは最近のインシデントによって、アプリケーションが使用不能または不安定になっている場合もあります。Heroku のステータスサイト を確認して、アプリケーションに影響がないかどうか調べる必要があります。
支援を求める
アプリケーションが停止している理由を判別できない場合、サポートチャネル(support channels)を使用して Heroku に連絡してください。