攻城団からのお知らせ

攻城団の各種お知らせ用のブログです。毎月のレポートや新機能のご紹介など、スタッフからのサイトに関するご連絡はここに書いていきます。

【経緯のご報告】サービス停止と復旧のお知らせ

まずはお詫びさせてください。ほんとうに申し訳ありません。
GWのこの楽しい時期に、そして攻城団をいちばん活用できる時期にサービスを止めてしまいました。

以下、経緯などをご報告しますが、ぼくが伝えたいのは上記の謝意がすべてです。
今後二度と起こさないようにします、とは情けないことにお約束できないのですが、今回の問題については原因が特定できており、その対策もすんでいますので同じミスは繰り返さないことをお約束します。

お伝えしておくべき大事なこと

復旧の際にみなさんに投稿いただいたデータを守ることはできたのですが、ログイン情報を破棄することになったため、全員強制的にログアウト処理をさせていただきました。
そのため「ログインしたままにする」と選んでいた方も、あらためてログインをする必要があります。パソコンとスマホの両方で使っていた方は大変お手数ではありますが、それぞれで再ログインをお願いします。

攻城記録や投稿した写真などは1件も失わずに復旧できたと思っていますが、もし消えていたらご連絡ください。
(その場合、救出できない可能性があることをあらかじめお詫びしておきます)

なにが起きたのか

現象としては以下の順番で起こりました(いずれも5月3日の出来事です)。

  • 15時半すぎからサイトが重くなる
  • 15:56にこうのが手動でサーバーを停止
  • 以降、2回再起動と停止を繰り返し
  • 21:08にメンテナンスページを表示
  • 23:22に復旧の報告

「サイトが重くなる」というのは表示されたりされなかったり、あるいは表示にすごく時間がかかる現象をいいます。
通常は数秒で攻城団のページは表示されますが、それが何十秒もかかってしまったり、しばらく待っても表示されずブラウザに白い画面や「エラーが起きました」と表示されます。

以前はテレビなどでお城の話題が出るとアクセスが集中してよく起きていたのですが、ここ1年はまったく起きていなかったので油断していました。

なぜ起きたのか

小さな要因はこのところ順調にアクセスが増えていて、GWに入ってアクセスがさらに増えたことですが、じっさいにはそれは軽微なもので、大きな理由は不要なデータが蓄積されたことにあります。
ようするにゴミは定期的に捨てなければならないのに、それをサボっていたのが原因です。はっきりいうとぼくの怠惰が招いたことで、この点については心からお詫びします。

セッション情報の削除をしていなかった

もう少し詳しく説明します。
攻城団のデータベースには基本となる城郭データや、みなさんの攻城記録などのデータが保存されていますが、じつはいちばんおおきなデータはアクセス時のセッション情報を記録するものです。
セッション情報というのは、サービス運営者が「このブラウザはさっきのこのブラウザと同じだな」と判断するために使うもので、ログインを前提とするサービス(=個々人を特定する必要があるサービス)では一般的なものです。ぼくらもこのセッション情報を用いて同一人物かどうかを判断しています。
(正確にはパソコンとスマホや、同じパソコンでもブラウザが変わると別人扱いになりますが、ここでは割愛させてください)

このセッション情報は、以前はデータベースを使わずファイルに書き込む方式を採用していたのですが、2016年5月にサーバーを増強した際に現在のデータベースを使う方式に変更しました。
理由はふたつあります。ひとつは今後アクセスが増えてサーバーの台数が増えた際に一元管理できるようにするため。もうひとつはHDDが圧迫されるのを防ぐためです。このこと自体はいずれも妥当な変更理由だと思っています。

以降、サイトのセッション情報は毎日のようにデータベースに蓄積されてきました。そして約1年後にパンクしたというわけです。
ほんとうは数日前(あるいは数週間前)にアクセスした情報はゴミでしかないので、これを定期的に削除するプログラムを準備しておかなければならなかったのですが、そのうちやればいいやと思って後回しにしていたためにこのような事態を引き起こしてしまいました。

ここ数日、毎朝4時前後にサイトが重くなるという報告も受けていて、まさに昨日3日の早朝にはぼくもその時間に起きて現象を把握したところだったのですが、対応が一歩間に合いませんでした。
ちなみにこの4時前後に重くなる原因はデータベースのバックアッププログラムの処理に時間がかかっていたためです(その理由がセッション情報が肥大化したため)。

天気の情報も肥大化していた

そして2番目におおきなデータは天気のデータです。今日の15時半に同様の現象が起きたのは、こちらが原因です。
天気予報のデータも過去のものは捨てていけばよかったのですが、いずれ天気の情報とみなさんの報告を組み合わせて、たとえば竹田城の雲海予報などに使えればと思って、大事に残しておいたのがアダとなりました。
(セッション情報と天気、このふたつのデータが突出して肥大化していました)

天気予報は毎日15時10分に提供先から取得を開始するようにしていました。最近はお城の数も増えたので数時間かけて取得しています。
これは深夜にはお城のページを再生成するプログラムが動いているので、同時に動かしたくなかったのと、平日のこの時間帯であればアクセスも少ないので問題はないと考えていたからです。

じっさい取得そのものには問題はなかったのですが、ダブリを避けるために(自動で取得すると未来の3〜4日間が取得されるので、前日前々日に取得したデータと重複が生じるため)、1件ずつすでに取得済みかを確認して登録していたためデータベースへのアクセスが増えてしまっていたわけです。

プログラムのアクセスと人間のアクセス、それにGWで人間のアクセスが増えていたこともあわさってサイトが重くなるという現象が起こりました。
そして対処する際にアクセスがつづくとデータが破損するおそれがあったため、いったんサイトを閉じて「緊急メンテナンス」とさせていただきました。

今回の対応と今後の対策

復旧までに7時間半もの時間がかかったのは単純にぼくの技術力の問題です。
おそらく熟練した方であれば1時間もあれば復旧できたと思います(その前にこのような事態を引き起こしていないと思いますが)。

サイトを止めて、データベースからセッション情報と天気情報を削除して、データベースを再起動すれば再開できるかなと思っていたのですが、あまりに肥大化しすぎていて削除することができなかったので時間がかかりました。その削除命令に対する応答がなかったため強制終了をかけたら今度はデータベースを読めなくなったりと、自業自得ではあるものの、寿命が縮む思いでした。

いちおう毎日バックアップを取っているので(それが原因で毎朝重くなっていたとはいえ)、その状態にまで戻すことは可能なのですが、朝4時の状態に戻してしまうとそれ以降の数時間に登録してくださった方や、団員のみなさんの攻城記録やアップした写真が消えてしまうので、なんとか手動で停止した15:56の状態で再開したいと考えました。そのため慎重に作業を進める必要もあり、少し時間がかかってしまいました。

ただ冒頭でお伝えしたように、データは消えることなく復旧できたと思います。

このように当初はもう少し短い時間で復旧できると思っていたため、メンテナンスページ(と再開時のお知らせメールの受付)を表示するのが遅くなってしまいました。
次回もしまたトラブルが生じた際には(それがないことをなにより望みつつ)、まず最初にメンテナンスページを表示するようにします。

今後のために講じた対策

まず当然のこととして、セッション情報と天気情報が肥大化しないように、定期的に削除を実行するようにプログラムを書き直しました。
サーバーの増強は現時点では必要ないと判断していますが、いつでもそれができるように手配の準備は進めておきます。

あとはデータベースへの接続数がパンクしないように監視するプログラムも用意しました。
24時間365日、ひとりの人間が寝ずに監視するわけにはいかないので、基本的には機械に監視させつつ、緊急時にはメールが届くようにして、数時間以内に対応できるようにします。いままでも「サイトが止まった」ことを検知するようにしていましたが、今後は「止まりそうだ」という予兆の段階で気づけるようにチェック項目を増やします。

将来的にはプログラムの全面的な書き直しやサーバーの増強もやらなきゃいけないのですが、現時点ではお金も節約しつつ運営しなければならないため、たとえお金で解決できることであっても先送りにできることはそうさせてください。
ただしぼく自身、今回のことでかなりダメージを受けたので、一日も早くその状況が整うようにがんばりたいと思っています(し、ひきつづき応援とご支援をお願いいたします)。

繰り返しになりますが、GW後半の初日という多くの方が「さあお城めぐりに出かけるぞ♪」とテンションの上がるタイミングにサービスを止めてしまって、ほんとうに申し訳ありませんでした!
まだ休みは4日ありますので、ぜひお城に出かけてたくさんの写真を撮ってきてくださいね。

   
この記事のURLとタイトルをコピーする
これからあなたが訪問するお城をライフワークとして記録していきませんか?(過去に訪問したお城も記録できます)新規登録(登録は無料です)

最新記事

竹田城にチラシが置いてあります

  • チラシ設置報告

雲海が見事な「天空の城」として知られる竹田城にも攻城団のチラシを置いていただきました。

つづきを読む

岡崎城が「みんなのベストキャッスル」に協賛してくださいました

  • お知らせ

現在投票受付中の恒例企画「みんなのベストキャッスル」に岡崎城のある岡崎市が協賛してくださいました。

つづきを読む

竹田城が「みんなのベストキャッスル」に協賛してくださいました

  • お知らせ

現在投票受付中の恒例企画「みんなのベストキャッスル」に竹田城のある朝来市が協賛してくださいました。

つづきを読む

諏訪原城にチラシが置いてあります

  • チラシ設置報告

見事な丸馬出や三日月堀が残る諏訪原城にも攻城団のチラシを置いていただきました。

つづきを読む

「沖縄県三名城」のバッジを公開しました

  • お知らせ

みなさんの投票を参考に【都道府県バッジ】シリーズの第21弾として「沖縄県三名城」のバッジを公開しました。

つづきを読む

特集記事

あなたのお城巡りをより便利に快適に、そして楽しくするためにぜひ登録してください。

新規登録(登録は無料です)

フォローしませんか

攻城団のアカウントをフォローすれば、SNS経由で最新記事の情報を受け取ることができます。
(フォローするのに攻城団の登録は不要です)

フィードバックのお願い

攻城団のご利用ありがとうございます。不具合報告だけでなく、サイトへのご意見や記事のご感想など、いつでも何度でもお寄せください。 フィードバック

読者投稿欄

いまお時間ありますか? ぜひお題に答えてください! 読者投稿欄に投稿する

トップへ
戻る