先把当时的情况摆出来。给一份 20 万 token 的产品手册建了 Gemini 显式缓存,压测完忘了删,月底账单里 cache storage 一项扣了六十多个小时,比调用费还高。
排查方向其实有限,先把可能性排一排。缓存按存活时长计费,与有没有调用无关。少数情况下是缓存有默认 TTL,脚本里没设更短的过期时间。
少数情况下是压测脚本每次运行都新建缓存,旧的不清理。不容易想到的是,缓存名没有落库,事后无法批量删除。
动手时先列出当前所有缓存及过期时间
curl https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$G_KEY | jq '.cachedContents[] | {name, expireTime}'
批量删除不再使用的缓存
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$G_KEY
创建时显式设置较短 TTL
curl -X POST https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$G_KEY -d '{"ttl":"600s","model":"models/gemini-2.0-flash"}'
等前面都确认过,再在压测脚本退出时清理缓存
python bench.py --cleanup-cache
别只看报错消失,验证要多做一步。缓存列表为空或只剩业务在用的条目,次日账单里存储费不再增长。
提醒一点。按时间计费的资源最容易被遗忘,创建时就把名字和过期时间写进配置,清理才有依据。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
