PlanetScaleに限界が訪れるとどうなるか
突然の Anomalies
ある日突然 PlanetScale の Insights が不穏な Anomalies を発症しました。
見てみると毎時 0 分と 30 分に 5,6 分ほどの不穏な負荷が……。誰かが勝手に API を叩いて負荷をかけている……そう直感しました。
調査
なにはともあれ確証を得るために調査することに。一応バッチの可能性もあるかと思い調べてみましたが 30 分ごとに実行しているバッチはありませんでした。
PlanetScale の Anomalies のログはクエリが見れた気がするので確認。……と思いましたが時間が短すぎるのか、残念ながらクエリは表示されませんでした。仕方なく全般的なスロークエリやサーバー側のログを見てみることに。
しかしサーバー側のリクエストログを見てみましたが、なにか特別その時間に増大しているようなリクエストが見つからず。スロークエリも見てみましたがいつも出ているようなものばかりで、特段目新しいものやその時間帯だけ増えてるような変なものも見つからず……一体どうなっているんだ。
ちゃちゃっとアクセス制限して終わる予定だったのですが全然解決する見通しがたたずとなってしまい困りました。
その時間帯にアクセスしてみるとかなり重くなっているし、だんだんとユーザーさんからも重くなっている報告が上がってくるようになりました。
一応色々不穏そうな部分を試しにいくつか修正していったのですが、全く解決せず……。
もしかすると PlanetScale 自体の問題の可能性もあるのではと PlanetScale のせいにしたくなってきました。
アップグレード
最終手段として、プランをアップグレードするか……と思うようになってきました。
念の為無停止でアップグレードできるのか調べてみることに。
クラスター サイズの変更は、ダウンタイムを必要としないシームレスな操作です。
なるほど、大丈夫そう。
さらに目を通していると書きのような記述が。
目安としては、CPU 使用率が一定期間にわたって 100% またはそれに近い状態が続く場合は、クラスターのサイズを大きくすると効果的です。逆に、CPU 使用率が一定期間 50% を下回る場合は、サイズを小さくできる可能性があります。データベースをクリックし、アーキテクチャ図で「プライマリ」をクリックして、「メトリックとパフォーマンス」の下のグラフを参照することで、CPU 使用率を監視できます。
……ちょっとまった、そういえば Anomalies を見ている時にちょっと気になったグラフが。
むっちゃ 100%になっている。
一応 Primary の状態も見てみると……そちらも 100%になっていました。まだアップグレードしても 3000 円くらいアップするくらいだったので即アップグレードしました。
結果、解決しました。
まとめ
そう、結局 DB サーバーのリソースが足りなくなっていただけだったのです。なんでこんな 30 分毎の謎なグラフになるのか……。常時振り切っていてくれればすぐ気づけたのに……。
なにはともあれおざなりになっていた負荷となっている部分も徐々にがんばって改善していこうと思いました(つぎは 7000 円くらい変わってくるのでもう上げたくない)。
Discussion