解決の方向に向かいましたので、今回の500エラーについてまとめてみます。
事の発端はユーザーからの問い合わせから発覚
2018年2月18日の記事に書いていますが、500エラーに気づいたのはメルマガ購読者さんからの問合せからでした。「サイトにアクセスできません」というところから今回の500エラーが始まったのです。まだこの時には、ブラックボックス状態への入り口だとは全く気づきませんでした。
前から気になっていたPING送信に関するメンテナンスでもしようと思い、サイトをいじいじとしていたわけです。この日にちょうどアクセスができないとの問い合わせがあったので、完全にこのPING送信が原因だと思い込んでいました。
そのため、PING送信をやめればすぐに収まると楽観的に考えていましたね。だって、稼働したと思ったら、とんでもない量の送信ログが永遠とありましたから。今考えると浅はかな考えですが、比較的アクセスが多い時間帯にはPING送信系のプラグインをオフにして、アクセスが少ない時間にONにすればいいやって。
翌日になっても解消されない500エラー。早朝からエックスサーバーへ電話
しばらくすれば収まると思っていた500エラーが翌朝になっても続いていました。この時点では、ずっと続いているわけではなかったので「断続的なエラー」として捉えていました。どういったときにエラーが発生しているのか理解できていなかったので、前日のPING送信が何か関係あるのかな?という程度です。
さすがに断続的だといえ、日中につながらなくなるのは困ります。そこで、朝一番にエックスサーバーへ問い合わせました。
私自身が500エラーに対する事の複雑さがわかっていないため、今思うと自分勝手な質問でしたし、的外れな質問だったなと反省です。ただ「どうにかしてくれ!」という思いでした。
ただ、解決しそうな回答ではないと判断したため、このまま放置しておくことに決めたのです。(そうすれば自然と収まるかもしれないと思っていました)
完全に犯人はPING送信だ!と決めつけていた
発生から1週間が経過しても500エラーが収まる気配がみられません。再度この問題と向き合おうと思い、改めてPING送信との関連性を調べることにしました。
そこでこういった記事を書いています。
そこで、疑っていたPING送信に対して、
PING送信でPHPがループしてサーバーの負荷が高まった
という文面を発見したため、この時点で完全にPING送信だと決めつけました。そうなると、このPING問題をどうするか?ということになってきます。送信先が悪いのか、相性が悪いのか、送信先でエラーを出しているのか、何か特定のPING送信先がおかしいのか、などなど。
時間はかかるかもしれないけど、一つずつPING送信に関すること(送信先やPING関連のプラグイン)をチェックしていこう!そんな気持ちで取り組んでいましたね。
記事投稿しようとすると500エラー!やはり犯人は・・・
500エラーに立ち向かっているとき、ふとあることに気づいたのです。「記事を投稿しようとしているときにエラーが出ている!?」と。
この500エラーの経過を忘れないようにメモとして残しておきたいと思っていたため、このように記事として書き留めていました。
そこで「記事を作成しているときに限って500エラーが発生している」ということに気づいたのです。(これは後になって画像のアップロード時だとわかるのですが、この時点では記事の投稿だと思っていました。)
いつもいつも500エラーが出ているかどうかなんてチェックできないですから、どうしてもパソコンを開いて記事を触っているときにしか確認できません。パソコンを閉じているときには発生しているのかすらわからないのです。
しかし、ここで一つ明確になったのは、記事の投稿時にエラーが発生していることは確かだということです。
この状態の様子を記事として残しています。
この状態でも、まだPING送信を疑っていました。
記事投稿時にエラーが発生しているのであれば、PING送信に間違いない。絶対にPING送信に関するエラーだ!と思うわけです。
この時は他の事に目もくれず、PING送信と500エラーに関する記事ばかり探していましたね。見つからないですが。笑
ついに一つずつPING送信先を調べていくという行動に出ます。
かなり前に送信先はチェックしているので、送信エラーが返ってきているわけではありません。「相性の問題かもしれない」という面で調べていくことにしました。
その時の記事がこちら。
面倒だという気持ちもありましたが、早く解決したいという気持ちの方が強かったですね。この状態は単純に売り上げが落ち込み続けるだけですので。
解消されない500エラー。ここでようやく冷静になる
一つずつPING送信先をチェックしても何も変わりませんでした。相変わらず500エラーが発生します。もうほんと限界に近い状態でした。
その時の記事がこちら。
ここでようやく冷静になって、PING送信以外の可能性を考えるようになりました。まずこういうときに大事なことに取り組みます。それは憶測ではなく事実として起こっていることだけをまとめることです。
- 画像をアップロードした時に発生している
- その直後から不定期で15分程度のときもあれば30分以上続くときもある
- アクセス数は通常、DDoS Attacks の形跡はない
- CGIプログラムを使ったシステムだけエラーが出ている
- それはアカウント内全てに影響
- どのドメインのワードプレスからでも画像アップロードによって発生する
- ワードプレスの表示や投稿は普通にできる
わかっていることはこのくらいでした。
PING送信が原因だといっているのも、その直前に行った作業というだけで憶測の範囲内です。それ以外に原因があるかもしれませんし、それ以前からエラーが発生するような状況だったのかもしれません。ただ、その間に画像アップロードを伴った記事更新が少なくて気づかなかっただけかもしれません。
さまざまな原因を考えるために調べていたら、とんでもない文字を発見しました。
それは、
500 Internal Server Error は ブラックボックス
これを見たら、震えそうでしたね。笑
それでも、一つずつの可能性を潰していこうと思っていて、キャッシュ系プラグインを導入してみたり。(これは結果的に導入して良かったです)
もうダメだ・・・エックスサーバーさんに再び助けを求める
一つずつ原因を仮定して検証してみるものの、一向に終わる気配を感じることができませんでした。エックスサーバーから他へ移したら、これらのエラーが解消するのではないか?とさえ思いました。
しかし、エックスサーバーの契約を見ると。
「さ、さ、三年契約」(しかも更新したばかり)
もう向き合うしかありません。笑
一部のドメインを移行してメインサーバーを変更としても、エックスサーバー自体を捨てるわけにはいかないのです。
再度、エックスサーバーさんへ助けを求めることにしました。エラーログやエラーの現状を事細かく伝えました。そこでやり取りしているうちに、500エラーは複雑で原因の特定が難しいということもわかりました。一つずつ確かめていくしかないということも。
その回答の中で、一つだけ糸口が見えたのです。
まとめ:ようやく解決への糸口が見つかる
現状、今でも画像投稿時に「500 Internal Server Error」エラーは発生しています。完全な解決とはなっていない状況です。(これだけ書いておいてすみません)
エックスサーバーさんにはこちらの知識不足にもかかわらず頻繁にやり取りしていただきました。そのやり取りの中で、一つわかったのは「エラーが出ていて困っているのは、そのCGIプログラムを使ったシステムだけ」ということです。
他にも見えないところで影響が出ているのかもしれませんが、目に見えているのはこの部分です。そして困っているのもこのプログラムがエラーを吐き出すことです。
もしかしたらPHP7によってうまく稼働しなくなったのかもしれません。そう考えると、このCGIプログラムのみを他のサーバーへ移転すれば当面は解決するのではないかと考えました。
当然、PHP7に対応していないのであれば、どのレンタルサーバーへ移行しようとも遅かれ早かれ同じようにエラーが出る可能性があります。今困っている状況を脱出するにはこれが最善だと判断して、現在はこのシステムだけを他のサーバーへ移転させて運営しています。
年度末のくっそ忙しい時期を乗り越えたら、時間を見つけて検証したりシステム自体を専門家に見てもらって修正したりしたいなと思います。
とりあえず、移行してからは悩みが一つ減ったのでかなりストレスが減りました。笑
また今後、この問題に取り組むときに続きを書くかもしれませんが、一旦は終了ということにします。
今回の件で、たくさんの人からアドバイスをいただいたり、いろんな人のサイトを参考に勉強させてもらいました。そして質問に対して真摯に回答してくれたエックスサーバーの担当さんにも感謝です。ありがとうございます。
さて、新しい年度が始まったばかりですので、気持ちを入れ替えてがんばっていくとしましょう。
ではまた!