まずはお詫びさせてください。ほんとうに申し訳ありません。
GWのこの楽しい時期に、そして攻城団をいちばん活用できる時期にサービスを止めてしまいました。
以下、経緯などをご報告しますが、ぼくが伝えたいのは上記の謝意がすべてです。
今後二度と起こさないようにします、とは情けないことにお約束できないのですが、今回の問題については原因が特定できており、その対策もすんでいますので同じミスは繰り返さないことをお約束します。
復旧の際にみなさんに投稿いただいたデータを守ることはできたのですが、ログイン情報を破棄することになったため、全員強制的にログアウト処理をさせていただきました。
そのため「ログインしたままにする」と選んでいた方も、あらためてログインをする必要があります。パソコンとスマホの両方で使っていた方は大変お手数ではありますが、それぞれで再ログインをお願いします。
攻城記録や投稿した写真などは1件も失わずに復旧できたと思っていますが、もし消えていたらご連絡ください。
(その場合、救出できない可能性があることをあらかじめお詫びしておきます)
現象としては以下の順番で起こりました(いずれも5月3日の出来事です)。
「サイトが重くなる」というのは表示されたりされなかったり、あるいは表示にすごく時間がかかる現象をいいます。
通常は数秒で攻城団のページは表示されますが、それが何十秒もかかってしまったり、しばらく待っても表示されずブラウザに白い画面や「エラーが起きました」と表示されます。
以前はテレビなどでお城の話題が出るとアクセスが集中してよく起きていたのですが、ここ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日ありますので、ぜひお城に出かけてたくさんの写真を撮ってきてくださいね。
toproadさんが城がたり「よくわかる小牧山城」を企画してくれました。愛知県小牧市と調整してくださり、学芸員の方にZoomで話していただけることになりました。小牧山城の歴史、発掘調査の成果など、いろんな話が聞けると思いますのでぜひご参加ください。
つづきを読む昨年に続いて第6回目となる団員総会を開催したのでレポートを書きました。今年は去年と同じ会場でしたが、内容はかなりアップデートしています。とくに「お城ビンゴ」は盛り上がったので、今後の定番ゲームにしていきたいですね。来年はさらに多くの団員と集まりたいです。
つづきを読む美濃守護・土岐氏の庶流である久々利氏の居城、久々利城にも攻城団のチラシを置いていただきました。可児郷土歴史館と久々利地区センター、さらに可児市観光交流館で入手可能です。
つづきを読む小栗信濃守によって築かれた本陣山城(御嵩城)にも攻城団のチラシを置いていただきました。「東美濃の山城を制覇せよ!」キャンペーンの缶バッジ受取場所でもある、御嶽宿わいわい館で入手できます。
つづきを読む土岐明智氏の居城であり、戦国時代にはその一族である妻木氏の居城になった妻木城にも攻城団のチラシを置いていただきました。もとてらす東美濃で入手できます。
つづきを読むあなたのお城巡りをより便利に快適に、そして楽しくするためにぜひ登録してください。
攻城団のアカウントをフォローすれば、SNS経由で最新記事の情報を受け取ることができます。
(フォローするのに攻城団の登録は不要です)
攻城団のご利用ありがとうございます。不具合報告だけでなく、サイトへのご意見や記事のご感想など、いつでも何度でもお寄せください。 フィードバック
いまお時間ありますか? ぜひお題に答えてください! 読者投稿欄に投稿する