LoginSignup
1
0

Redshift Serverless RPUスケールの挙動

Last updated at Posted at 2023-07-24

Redshift Serverlessを使用して気づいたポイントについて記す

負荷をかけても期待通りにスケールしない

Serverlessであり、負荷に応じて自動的にスケールするなら、Base RPUは8(最小値)で良いと考えて設定した。
しかし、実際にQueryを実行すると、非常に実行が遅く、実際に実行時のCloudwatchを見ると全くRPUがスケールしていないことがわかった。
この挙動が疑問に思えたため、以下の試行を行い、挙動を確認した。 (ちなみに試したのは2023年の3月なのでまた挙動は変わっている可能性もある)

まず、十分な負荷のかかるようなデータとSQLを準備するのはそれ自体が工数がかかるので、AWSのブログで紹介されているTPC-DSベースのRedshift用のDWHベンチマークを使用することとした
https://github.com/awslabs/amazon-redshift-utils/tree/master/src/CloudDataWarehouseBenchmark/Cloud-DWB-Derived-from-TPCDS

処理するデータ量にバリエーションがあったが、料金があまりかからないように1TBでBase RPUと並列度を変えながらスケールするか試してみることとした。
※画面はAWSコンソールのRedshift Serverlessのモニタ画面

image.png

まずはBase Capacity=16、10並列で試行
15分程度処理を流したところで、RPU48までスケールしたことが確認できた。
私見ではあるが、想定よりスケールしないという感想。
負荷がかかったらもっと迅速に、かつリニアに上がってほしいと感じた。
またRPUが48までしかあがらないことも疑問であった。


今度はスケールしなそうなケースを試行する
image.png
Base Capacity=16 並行度1で試すとやはり全くスケールしない結果となった。少なくとも並列クエリが必要に見受けられる。


もう少し並列度をあげて試行する。
image.png
Base Capacity=16 並行度5
この程度の処理だとやはりスケールしない。
スケールの閾値はこのベンチマークの場合並行度5ー10の間ではないかと推測された。

現時点のServerlessで確認できた挙動のまとめ

  • ある程度の数の並列処理を実行しないと全くスケールしない。
  • スケールするにしてもすぐにはスケールしない、しばらく経ってからスケールするのである程度長時間の処理が必要。
  • スケールするときも大きくはスケールしてくれない。(今回はRPU=16->48までしかスケールしなかった)

結論

スケール頼みにすると使い方で思ったようにスケールしないため、処理が遅くなってしまう可能性がある
その場合はBase Capacityを多めに設定しておく必要がある。
(ただしそうすると少量のRPUで十分な処理であっても、必要な料金が大きくなってしまう)

もう少し負荷にリニアに追従してくれると使いやすと感じたため、今後のアップデートに期待します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0