2020-11-15(日) [長年日記]
■ MongoDB AtlasのDBを分割、移動した
先日DBを引っ越したこの日記でTimeoutエラーが出るようになって、という話をTwitterでつぶやいたら先に移行したMatz日記でも同じという証言があって、Atlasの信頼性かなり低いのでは? みたいな疑惑が出たので少し調べてみた。
といってもプランは無償のM0だし、想定用途的にはSandboxだから文句を言う筋合いではない。フリーミアムに乗っかっておこぼれを頂戴している立場である。たぶんちゃんとお金を出せばまともな性能を期待できるはずです。M0の次のプランM1は趣味の個人サイトで使うにはすでに高すぎるんだけどさ。
Herokuのコンソールに入ってDBを叩いてみると、特定の日付の日記を直接クエリするならすぐに返ってくる。一方、日記全体を舐めるようなクエリ(tDiaryではカレンダーを表示するためにこれをやる)だ数分は戻ってこない。一応クエリは完了するので、Webサーバがタイムアウトさえしなければ動くけど、まぁ使い物にはならんわな。
Heroku側の問題という可能性を考慮して、ローカルからも試してみたけど同じなのでAtlasのM0プランが相当メモリを絞っているということではないかなぁ。DB側のプロファイリングができないプランなので想像だけど。稼働開始後、数日経過してからこの状況になってるのが謎だけど。利用状況をみて動的にメモリを絞られたりしてたらたまらんが。
カレンダー生成のクエリを軽くするために専用のドキュメントを作ってみたりもしたけど改善されないので、どこかに同じような重いクエリが潜んでいそう。tDiaryのジャングルに分け入ってる時間がないので今日はここで打ち止め。
とりあえず、1クラスタに複数の日記のDBを置くのをやめて、この日記だけは独立させてみた。また数日後に同様な現象が起きたりしたら、この日記くらいのサイズがM0の限界ということなので、別のストレージの検討を始めなきゃならなさそう。
2020-11-09(月) [長年日記]
■ ミリシタイベント プラチナスターチューン「餞の鳥」(D/Zeal)(Trick&Treat)
MTW C/Wシリーズのイベント、第2弾は早くもD/Zeal登場でテンションあがるね。譜面は簡単で、なんとMMixを初見でフルコンできた。快挙。
しかし時間がないのと完全に油断していたので、3万pt到達できず、なんと静香のイベントカードをとれずorz いやー、こんなん初めてだ。あとで回収できるとはいえ、ちょっとダメですねぇ、これは……。
コミュはなんだか、当たり障りがないというか、このご時世を反映してか(YouTubeっぽいところで)「D/Zealチャンネル」と称しての生配信番組という体だけど、CDドラマのあらすじを解説するだけのパートとか、尺稼ぎっぽい流れでミリオンらしくなかった。
THE IDOLM@STER MILLION THE@TER GENERATION 12 D/Zeal
ランティス
¥1,270
2020-11-08(日) [長年日記]
■ MongoDBを(ようやく)mLabからAtlasへ移行
Heroku上で長らくMongoDBのadd-onを提供してくれていたmLabがサービスをやめるという案内が来たのはもう何ヵ月も前だったと思うが、転職活動中ということもあってなかなか手をつけられなくて、そうこうするうちにサ終まであと3日なんてことになってしまった。なんで年休消化中にやらなかったんだ、おれ。
移行先はMongoDB社じきじきに提供しているサービスAtlas。もはやこんな時期なので移転Howto的な記事を書くのは意味ないし(ググればいくらでも出てきます)、ちゃんと移転したぞ、という記録としての意義しかないね。
mLab社はMongoDBに買収されたんだから、もうちょっと楽な移行手段は用意できなかったんかい! とツッコミたくなるほど手間がかかる。考えてみればDB移行なんてどんなサービスでも一大事業なんだから、それを10個以上(Stagingなんかも含めればその倍)のサービスで週末の夜だけを使って実行するなんてだいぶバカである。
ある程度は自動化したものの、動作確認やらなんやらはしなきゃいけないし、マウスぽちぽちと目視確認はなくせなくてつらかった。あとMongoは3.xの頃から使ってるから、知識のアップデートが足りてなかったのを知れたのは良かったな。mongodumpやmongorestoreがURLを受け付けるようになっていたのは知らなかった。おかげで作業がだいぶ楽になった。
あと4.x以降、databaseのrenameやコピーができなくなっていたので、dump + restoreでやるしかなかった。なんでコピーがしたかったかというと、移行ツールを使うとdatabase名がHerokuで自動生成された「heroku_xxxxxxx」みたいな名前になってしまって、あとで困るからなんだな。なのでdumpしてから意味のある名前でrestoreするという作業を入れた(もちろん自動化した)。
というわけで、この日記を含めたtDiary.Netのアクティブな日記群、宅配トラッカー、(来るべきシーズンを待っている)グラコロ同盟など、すべてのサービスをAtlasへ移行完了。ちゃんとやりきった自分をほめてやりたい。