ウェブサイト停止経緯、改修点、今後について
ちょうどSoccerD.B.を開設して10年というタイミングなのですが、外部要因でサイトを停止することになるとは思いませんでした。普段利用している皆様にお詫び申し上げます。
諸々懸念はありますが、ひとまず復旧と致します。トップページはこちら。
この記事にて、サイト停止に至るまでの理由や、停止中に行ったサイト改修について、そして今後について説明致しますが、始めに申し上げますと、停止の判断を行った最後の事象については原因が分からないため、再度同様の事象が発生する可能性があります。
サイト開発から停止まで
専門的な内容が含まれますが、今回のサイト停止までの経緯や要因と思われる点について記載します。こういった失敗事例が誰かの何かに役立てば幸いです。この点について興味がない方は「サイト改修について」「今後について」へ飛んでください。
弊サイトは一部のコンテンツで協力者はいますが基本的に全て1人でウェブサイトの開発から日々の更新まで行っています。サイトの公開は10年前ですが、開発はさらに数年前から始めており、その時点では自分のウェブサイト開発経験はかなり少ない状況で且つ知人内で使うようなサイトでした。開設後、多少の改修は行なっていますが根本的には変えてないため、初心者コーディングのまま運営していたことになります。PHPベースですが、当時はフレームワークを利用せず生で書いていました。
環境は主要なレンタルサーバーのうちの1つで現在も同じ会社で継続しています(一応会社名は伏せておきます)。PHPのバージョンアップの影響で途中5.6から7.4の環境へサーバ移行していますが、DBサーバーは昔からそのままでした。
弊サイトはこういったデータベースサイトなのでかなりページ数を持っていますが、ブログと歴代日本代表ページを除いてスマホ対応を行なっていませんので、SEOはそんなに強くない状態でした。ただ2年くらい前におそらくサイト内の広告を外した影響でアクセス数が増加します。
昨年秋くらいよりサイトアクセス時にサーバー側のアクセス制限により見れないケースがたまに発生し始めます。レンタルサーバーは他のユーザーと共同利用しているため「どこかのサイトのせいで自分のサイトが落ちる」ケースがあります。このアクセス制限はSoccerD.B.へのアクセスで別のサイトが落ちる可能性があるため、レンタルサーバー側でSoccerD.B.へのアクセスを制限したことになります。アクセスによる負荷はそのページの作り方にも影響します。弊サイトの場合、大量のデータ群からデータを読み出しているので一般的な個人サイトに比べればこの時点で負荷は大きいです。あと個人的なこだわりにより国旗を多用していますが、画像ファイルを多く利用すると負荷としては「画像ファイルへのアクセス」も加算されます。また、スクレイピング等で時間間隔をおかずに連続してページ取得が行われてしまうと、短時間でかなりのアクセスが集中してしまうので大きな負荷となります。生成AIでこの手のコーディングが簡単になりましたが、AIで生成されたものだと時間間隔を置くコードがない場合があるので気をつけて頂けるとありがたいです。自分もスクレイピングは利用していますが、ウェブサイトはウェブブラウザから見てもらうことを前提にしたサービスでありスクレイピングは良い行為とは言えないという認識は忘れないようにしています。
上と同じく昨年秋よりレンタルサーバー会社からエラー時のエンドレスループ処理によるページ停止のアラートがたまに飛ぶようになります。このエラー自体は目視できなかったのですが、サイトが重い時や同接過多の場合に発生したと推測しています。ここは初心者コーディングでなければ回避できた箇所です。
レンタルサーバー会社より届いたアラートについては随時対処していましたが、サイト停止の前日よりDBサーバーのエラーが頻発するようになります。DBサーバーのルート権限でmax_user_connectionsが10に下げられた影響のようです。この件はアラートも一切なく原因不明。phpMyAdminを利用していますが、そこにすら安定してログインできなくなりました。このエラー時にセキュリティに関わる文言がウェブ閲覧時に掲載されてしまうため、翌朝に直らなかった時点でサイト停止を決断しました。DBだけ作り直してすぐ再開することも可能でしたが、根本的に作り直したかったのとアクセス数を減らしたい思惑もあり1ヶ月以上の停止となりました。仕事が落ち着いている状況でなければ数ヶ月かかる内容でしたので、一応これでも頑張った方です。
上記を踏まえフレームワークを利用した作りへ移行し、国旗画像は全てbase64化。処理が重めなページは廃止。また様子を見るため一部のページは休止しました。レンタルサーバー会社を変えても良かったのですが、長期契約をしてしまったので一旦は継続。ちょうどPHP8.3へのサーバ移行が可能だったのでそちらへ移行し、DB(MySQL)もこれまでの5.7から8の環境へ移行しました。なので環境自体は差し代わった形となります。
サイト改修について
弊サイトは表を多く利用していますが、いくつかの表をダッシュボードのような形式に変更しましたので、そちらについてご紹介します。
上のキャプチャ映像はHondaFCの選手出場記録ページのものです。(ブラウザ環境によっては映像が見れない可能性があります)
対象のページによりますがダッシュボードページは表の種類を選択する灰色のリンク、集計方法を選択する薄い青緑色のリンク、条件を選択する黄土色のリンクがあり、選択内容によって表の中身が変わります。SoccerD.B.のチームページは複数の公式戦の値の合算値を掲載していますが、条件の部分の大会名を選択することで、その大会のみの数値に変わります。集計方法で「大会」を選択した場合は大会列が追加され、それぞれの大会毎の数値が掲載されます。
表は基本的に表のヘッダ部分(データの名称が書かれている部分)を押すことで表示順を変更することができます。データによって存在する列のタイトル下のボックスはフィルタの数値を入力するためのものです。ここに数値を入力するとその数値以上のデータのみが表示されます。
デバイスによっては対応していませんが、CSVダウンロードやクリップボードへのコピーも表の上のボタンから可能です。
先に述べた通りいくつかのページの廃止と休止を行いましたが、過去のウェブサイトにあった大会ページ内の監督別成績、チームページ内の監督別成績、選手ページ内の監督別記録につきましては、それぞれのチームデータのダッシュボードにある集計で監督を選択することでデータ閲覧可能です。いくつかのページの削減とデータベース容量の節約を行うためこの変更をさせて頂きました。要望が多ければ検討しますが、しばらくはこの形にさせて頂きます。
トップページや各ページのサイドバーなどいくつかレイアウト変更をしております。相変わらずスマートフォンサイズには対応しておりません。(歴代日本代表とブログについては以前から対応済み)
多くのページで以前からURLが変更しました。アクセス数が多かったページにつきましてはリダイレクト処理をかけております。
データ対象の大会等は大きな変更はありませんが、停止期間中に重複選手の修正等を多数行いました。大会終了したものの更新できていない大会はこれから作業をしますが、プリンスリーグ九州については公式サイトの改修と掲載量縮小等により更新未定です。
また、今年の春より学生のデータページにつきましては個人情報類の掲載を取りやめております。
今後について
今後についてですが、再構築したもののサイト停止に至った原因に対して直接的に対応したわけではないので、今後同様のケースが発生しないとは言い切れません。同様の事象が起きた場合はレンタルサーバー会社の変更を行うつもりですので、1〜2日またサイトを停止する可能性があります。この記事の掲載前に1週間ほどテスト稼働し、自然流入でサイトを使われる中では問題ありませんでしたので、さすがに大丈夫だろうと思っていますが、ご留意願います。
サイトを再構築した影響で、以前のサイトには存在しなかったバグがある可能性があります。こちらは把握次第修正致します。また問い合わせやサイト内検索等、ウェブサイトとしての必須項目は近々に対応しますが、検索エンジンに載せないページが増えたためサイト内検索についてはどう構築するか未定です。休止中のページについても早い段階での復旧を目指します。
データ対象の大会についてはいくつかの国際大会、デンチャレ、国内地域リーグおよび女子サッカーの追加を候補にしていますが、今回のトラブルでこれ以上データを増やすことへの懸念が生まれてしまったので保留となりそうです。安定するようであれば進めます。
色々ありましたが、引き続きSoccerD.B.をよろしくお願いいたします。