ウェブサイトを保守管理する上で、気をつけたいHTTPステータスコードは多数あります。例えば、HTTP 499 エラーは、タイムアウトを引き起こし、ワークフローを中断させることが。このような問題の回避のために、サイトの設定を適切に行うことが重要です。

HTTPステータスコード499が度々表示されている場合でも、初めて遭遇した場合でも、対処が必要な問題がサイトで発生している可能性があります。この解決方法はいくつか考えられます。

HTTP 499エラーの解決方法について動画での解説もご用意しています。

この記事では、まずHTTP 499エラーの概要と原因をご説明し、それから解決に役立つ5つの方法をご紹介します。それでは、早速本題に入りましょう。

HTTP 499エラーとは

HTTP 499エラーは、Client Closed Request(クライアントによるリクエストの終了)とも呼ばれます。これは、502 Bad Gateway Error(不正なゲートウェイ)の特殊なケースで、サーバーのリクエスト処理中に、クライアント側で接続が切断されたことを意味します。

HTTP 499エラーの原因は、クライアント側にあります。このようにクライアント側の問題によって生じるその他の一般的なエラーには、HTTP 400 Bad RequestHTTP 404 Not Foundが挙げられます。どちらも原因の特定は比較的容易ですが、HTTP 499エラーはさらに一般的です。

NginxとApacheの両方で発生する可能性がありますが、Nginxが定義したエラーであることから、通常Nginxサーバーでよく見られます。

というのも、Nginxサーバーのクライアント接続の処理方法は、Apacheとは異なるためです。Nginxでは、各クライアント接続が別のスレッドで処理されるため、あるクライアント接続の処理に時間がかかっても、他の接続の速度に影響を与えることはありません。

一方のApacheサーバーでは、すべてのクライアント接続が同じスレッドで処理されるため、1つのクライアント接続の処理に時間がかかると、他のすべての接続の速度が低下してしまうというデメリットがあります。

HTTP 499エラーの原因

HTTP 499エラーは、Nginxのログに表示されるのが通例です。原因はいくつか考えられますが、最も一般的なのは、ブラウザがタイムアウトしたか、またはユーザーがリクエストをキャンセルしたかのどちらかです。

例えば、サイトにアクセスが殺到すると、HTTP 499エラーが発生することがあります。また、サイト内で問題を引き起こすアルゴリズムによるリクエストが原因になることも。

もしくは、サーバーからの応答がなく、クライアントが応答を待っている間にタイムアウトしてしまった時にも、このエラーが生じます。この場合は、しばらくしてから再試行するのが得策です。特定のサーバーで常にこのステータスコードが表示される場合には、包括的な問題があるかどうかを調査することをお勧めします。

HTTP 499エラーを解決するには(5つの方法)

HTTP 499エラーについて分かったところで、次に解決方法を見ていきましょう。全部で5つあります。

1. ブラウザのキャッシュをクリアして再試行する

先に述べたように、このエラーは一時的な問題である可能性があり、ページの再読み込みで解決することがあります。サーバーに負荷がかかっているかもしれないので、ブラウザのキャッシュをクリアして、再試行してみてください。

キャッシュをクリアする手順は、ブラウザによって異なります。Google Chromeであれば、ウィンドウの右上にある縦三点リーダーをクリックし、「その他のツール」>「閲覧履歴を消去」に移動します。

Google Chromeで閲覧履歴を削除
Google Chromeで閲覧履歴を削除

次に、ブラウザのキャッシュからどのデータを削除するかを選択します。

削除するデータを選択
削除するデータを選択

キャッシュのクリアが完了したら、ブラウザを再読み込みします。この間、別のブラウザを使用してみるのも良いでしょう。エラーメッセージが消えているかどうかサイトを再度開いてみてください。

2. プラグインや拡張機能を無効にする

特定のプラグインがHTTP 499エラーを引き起こしていることも考えられます。ブラウザのキャッシュをクリアしても解決しなければ、一時的にプラグインを無効にして、エラーが消えるかどうか確認してみてください。

WordPressの管理画面の「プラグイン」画面にですべてのプラグインを選択し、一括操作のドロップダウンメニューから「停止」を選択。「適用」をクリックするだけでOKです。

WordPressのプラグイン画面
WordPressのプラグイン画面

別の方法として、ファイル転送プロトコル(FTP)クライアント、またはファイルマネージャー経由でサイトに接続し、プラグインフォルダ(「wp_content」>「plugins」)を右クリックして、「plugins_old」のようなフォルダ名に変更するのも有効です。

これで、WordPressサイトのすべてのプラグインが無効化されます。エラーメッセージがまだ表示されているか確認するために、サイトを再度開いてみてください。エラーが解決していれば、プラグインを1つずつ有効化して、問題の原因となっているプラグインを特定しましょう。

3. エラーログを確認する

HTTP 499エラーのトラブルシューティングに、エラーログの確認は欠かせません。問題を絞り込み、特定のプラグインやツールがその原因になっていないか簡単に判断することができます。

Kinstaをご利用でなければ、WordPressのデバッグモードを有効化して、エラーログを確認することができます。Kinstaをご利用されている場合は、MyKinstaから「ログビューア」で問題を瞬時に閲覧することができます。

MyKinstaのログビューア画面
MyKinstaのログビューア画面

Kinstaのコントロールパネル「MyKinsta」では、Nginx(/var/log/nginx.error.log)とApache(/var/log/apache2/error.log)のログファイルを確認することができ、さらに、分析機能を使って、サイトの問題を詳しく解析することも。エラーの発生頻度や、HTTP 499エラーが継続的な問題であるかどうかを把握できます。

4. アプリケーションパフォーマンス監視(APM)ツール

サイトの管理に欠かせないのが、サイト内の問題を特定する、トラブルシューティングツールです。アプリケーションパフォーマンス監視(APM)ツールの使用をお勧めします。

APMを使うことで、HTTP 499エラーなどの様々なエラーを引き起こす可能性のあるスクリプトやプラグインを絞り込むことができます。Kinstaのすべてのホスティングプランに、Kinsta APMをはじめとする、便利なツールの数々が付帯しています。

Kinsta APM
Kinsta APM

KinstaのAPMは、重要なデータを収集し、どのアプリケーションがパフォーマンス低下を招いているのかを判断するのに有用です。有効化すると、サイトで最も遅いトランザクションを見つけて、そのタイムラインを追跡し、問題の原因を突き止めることができます。さらに、ワーカープロセス、MySQLクエリ、外部HTTPリクエストの分析も可能です。

5. サーバーに連絡しタイムアウト値を増やす

先にも触れましたが、時間のかかりすぎが原因でリクエストが中断されると、HTTP 499エラーが発生することがあります。一部のサーバーでは、killコマンドが実行されます。

killは、一定時間後にリクエストを強制的に終了するコマンドで、時間のかかるリクエストが他のサイトに影響を与えるのを防ぐために、共用サーバー環境で一般的に使用されています。

Kinstaのホスティングプランなら、このようなご心配はいりません。各サイトが、すべてのリソースとソフトウェアの用意された隔離フトウェアコンテナ上で実行されます。リソースを他のサイトと共有することも、killコマンドが実行されることもありません。

しかし、HTTP 499エラーに関しては、「クライアント」の正体がコンテンツデリバリネットワーク(CDN)ロードバランサなどのプロキシである可能性も考慮しなければなりません。ロードバランサは、Nginxサーバーに対するクライアントとして、サーバーとユーザー間でデータをプロキシすることができます。これが時にタイムアウト(つまりNginxへのリクエスト中断)につながることがあります。

PHPのタイムアウトは、サーバーのPHP設定で指定された最大実行時間(max_execution_time)またはmax_input_timeを超えたときに起こります。アクセスの多いサイトや、実行時間の長いスクリプトを使用しているサイトで発生する傾向にあります。これの発生時には、タイムアウトの最大値を引き上げるのが得策です。

例えば、処理の完了までに20秒かかることが見込まれるリクエストがあれば、タイムアウト値が10秒に設定されているアプリケーションでは、タイムアウトの確率が高く、これがHTTP 499エラーにつながり得ます。

そのため、ご利用のサーバー会社や管理者に連絡を取り、タイムアウト値が適切に設定されているかを確認することをお勧めします。Kinstaでは、デフォルトのmax_execution_timeとmax_input_timeの値は、300秒(5分)に設定されています。PHPの最大タイムアウト値は、プランによって異なります。

必要に応じて、サーバーにタイムアウト値の変更を依頼しましょう。Kinstaを利用されている方は、MyKinstaからチャットでその旨をお知らせください

まとめ

サイト所有者が注意すべきHTTPステータスコードは多数ありますが、特に厄介なのは、HTTP 499エラーのようなクライアント側の問題が原因のエラー。この解決方法はいくつか考えられます。

今回は、HTTPステータスコード499のエラーを解決する5つの方法をご紹介しました。どれも簡単に実行できます。エラーが消えるまで、1つずつ実行してみてください。

WordPressサイトのトラブルシューティングと問題解決を楽に行うなら、Kinstaのホスティングプランのご利用をぜひご検討ください。KinstaのAPMやその他さまざまな機能で、サイトの保守管理を効率化することができます。