Ningensei848 / A-gebahyo

website that provides daily objective data analysis for horse racing forecasts
https://ningensei848.github.io/A-gebahyo/
0 stars 0 forks source link

[Kaizen]: Reduction of cold starts #17

Open Ningensei848 opened 1 year ago

Ningensei848 commented 1 year ago

気になったこと(改善すべき点)

バックエンドのコールドスタートが大きく、そのせいで CPU 専有時間が長くなり、コスト増に繋がっている

どうあってほしいか(理想とする姿)

なるべく減らす

コストを下げたい

Ningensei848 commented 1 year ago

--concurrency オプションも検討(デフォルトは1インスタンスにつき1ずつ実行)

cf. 同時実行  |  Google Cloud Functions に関するドキュメント

Ningensei848 commented 1 year ago

総評

/entries

image

/getHorseResult

image

追記

同時実行の値を 1 より大きい値に設定するには、1 つ以上の vCPU を持つ関数が必要です cf. https://cloud.google.com/functions/docs/configuring/concurrency

なので、/getHorseResult の方は 1GiB まで設定を引き上げる必要がある

Ningensei848 commented 1 year ago

現時点で想定しうるアプローチ

  1. 本番リクエスト前に、テストリクエスト(?)を行ない、「火入れ」する
  2. --concurrency を適切に設定(メモリ不足とかでコケないように)し、インスタンス数を減らす
  3. ↑ の二つの合せ技
Ningensei848 commented 1 year ago

結果

  1. 着火スクリプト
  2. concurrency を追加

してみたところ、パフォーマンスは上がってそう(コールドスタートは減ってそう)

/entries

image

/getHorseResult

image

講評

entries は 6x getHorseResult は 24x まで増やしてみる

Ningensei848 commented 1 year ago

結果

/entries

image

/getHorseResult

image

講評

Ningensei848 commented 1 year ago

/entries

image

/getHorseResult

image

講評

一向にメモリ丸々使ってくれないので、ここは一気に負荷を増やしてみる

Ningensei848 commented 1 year ago

データ取得が失敗する事案が発生

/entries がメモリエラーでコケると /getHorseResult も軒並み失敗する

64x でダメだったので、48x にしてリトライ

Ningensei848 commented 1 year ago

48x だとメモリ使用量がヤバいかも

ので 36x に下げて、 getHorseResult も 180x に調整