💯

_ah_SESSION を消す正攻法(たぶん)

2024/06/21に公開

動機

_ah_SESSION って何? めっちゃ溜まって課金されてる?
消したい!

結論

TTLを使う!!
設定すると、以降ずっと自動で消してくれる!

使い方

Google Cloud のコンソールから設定できます。

  1. 「Datastore」を開きます

  2. 当該データベースを開きます

  3. 「有効期間(TTL)」を開きます

  4. 「ポリシーを作成」をクリックします

  5. 画面右側に「TTLポリシーの作成」が開きます

  6. 種類欄で「_ah_SESSION」を選択します

  7. タイムスタンププロパティ欄で「_expires」を選択します

  8. 「作成」をクリックします

  9. ステータスが「ビルディング」になるのでしばらく放置しておきます

  10. ステータスが「サービス提供」になったら正常に設定完了です。これで期限切れデータがどんどん消えていきます。

以上です

TTLって昔は無かったですよね。
軽く検索して誰も書いていないので書きました。

ところでここを読んでいるということは…

既に _ah_SESSION がギガ単位で溜まっているかもしれませんが、ドキュメントを見ると24時間以内に古いデータが消えるようです。

TTL ポリシーを使用して、データベースから古いデータを自動的に削除します。TTL ポリシーは、特定のプロパティを特定の種類のエンティティの有効期限として指定します。TTL を使用すると、古いデータをクリーンアップすることでストレージ費用を削減できます。 データは通常、有効期限が切れた後 24 時間以内に削除されます。

が、実際は???

負荷をかけにくい設計になっているようなので、データ量によっては24時間では消えない気もします。[2]

参考

https://cloud.google.com/datastore/docs/ttl?hl=ja

脚注
  1. DatastoreのKind(種類)。RDBで例えるとテーブル ↩︎

  2. 大量に溜まっていたプロジェクトでこの設定を入れたとき、24時間で全然減っていなくて疑ったのですが、実はAI系クローラーに猛クロールを受けて激増していて、本当のところ消えていたのか消えていなかったのか判別できていませんでした。削除状況はモニタリングもできるようですし、簡易的にタイムスタンプで並べ替えてでもちゃんと見ておけばよかった…。結局そのプロジェクトではクローラー対策を入れたうえで削除コードを書いてループで消しまくりました。データ量が落ち着いてから調べたところ、きちんと消され続けています。 ↩︎

Discussion