PHPサーバーで「An error occurred.」が表示された時の対応

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

WEbサーバーを立ち上げていた時に、ある日突然「An error occurred.」というメッセージが表示されてしまって、本来のWEBページが表示されなくなった時、まず焦りますよね。
 

恐らく、このアラートって、サーバー側の更新などを行っていないのに或る日突然発生してしまう現象なんですよ。
 

これが、有料課金しているサーバーだった場合、非常に困ったことになります。ていうかアウトです。
 

こんな時どうするというケースで、実はこのエラーメッセージの時は、対応方法がプログラム内容に依存している事が多いので、修復方法は、コレというのがありません。
 

とりあえず、サービス運用エンジニアは、こうした自体に備えておくという事を肝に銘じるために、この記事を読んでおく事をおすすめします。

「An error occurred.」ってどういうエラー?

英語を直訳すると「エラーが発生しました。」という内容なのですが、つい昨日まで(さっきまで)正常に閲覧できていたページで、いきなりこんな画面が出るのってどういう事なんでしょう?
 

もちろんエラー全般に発生しがちなアラートなのですが、落ち着いている人はサーバーログからエラー内容を見つけに行くのもいいですが、大体の場合、サーバー負荷が高くなった時や、メモリーオーバーなどの際に表示される事が多い様です。
 

具体的な例で言うと、特定の一覧表示をする様な内容で、表示数の上限固定がされていないページなどで、登録データ数がサーバーの容量を超える値になった時に正常ページではなく、このページが表示されてしまいます。
 

また、DBアクセスなどを行っているサービスの場合(wordpressなど)、DB処理によるメモリー使用率が高くなった場合ですね。
 

ちなみに、僕の場合は、ユーザー一覧表示している画面で、登録ユーザー数が100人を超えた段階でこのアラートが発生しました。
 

とりあえず、スクショを撮っておきました。こんな感じです。
 

スクリーンショット 2018-04-29 12.56.55

対応方法

このエラーを無くすのは、サーバー負荷を軽くするしかありません。
 

僕のエラー発生の場合の対応は、表示ユーザー数を、全表示から、20ユーザー毎に表示し、ページネーション機能を追加する事で、見た目もさほど変えずに、サクッと対応完了する事ができました。
 

良く見かけるのが、wordpressをAWSで使っている場合、一番スペックの低いインスタンスを選択していると、気がついたらたまにこのエラー表示になっている事がありますが、これはインスタンスのスペックをあげてあげないといけないので、フレームワークのボトルネックはきちんと認識しておかなければいけませんね。
 

あと、プログラム修正をする事が難しい場合で、自分でハードウェアのコントロールができる人は、物理的にサーバーのメモリを増設してあげてもいいかもしれません。
 

そして、PHPのメモリ設定を大きくして上げる事で一時的には、エラーを回避する事ができます。
 

・・・・が・・・・、当たり前ですが、そもそもの処理を修正しないと、そのサービスを使い続けていると必ずまた性能上限に達してしまいますよね。
 

このエラー、結構初歩的なエラーで、そもそも表示されちゃうと恥ずかしいのですが、こういう事を想定してプログラミングできるかどうかって、非常に重要な設計思想だと思いませんか?

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です