突然收了一个Cloudflare的9美元的账单,虽然价格不算很高,但是一时没想到是哪一个计费项。
查看账单详情,发现来源于R2存储。
Description | Qty | Unit | price | Amount |
---|---|---|---|---|
R2 Storage Class A Operations (First 1M included) May 9 – Jun 8, 2025 | 1,121,440 | $4.50 per 1,000,000 | 1,121,440 | $9.00 |
也就是R2存储的A操作计费次数达到了1,121,4400,一个月一百多万次的调用,而这还没包括免费的那一百万次。
第一反应是之前上传了一批判题数据导致的,不过想来一千多题产生的一万多个文件,应该不至于产生百万次的写操作。然后就翻了翻实现逻辑,感觉没什么线索。
最后一通找,发现是DidaOJ网站的Cdn仓库调用次数过多了,判题数据的仓库反倒没有太多。于是就想到了,之前做个一个状态更新逻辑。
之前为了节省服务器资源,把服务器状态上报的数据写入了R2存储,每个节点3秒一次上报自己的状态,于是一个月直接把额度写满……
之前选择对象存储服务器的时候,一直在关注流量费用,于是选择了出口流量免费的R2存储。但是今天一看,R2存储的A操作百万次收费4.5美元(每月免费100万),而阿里云100万次收费1元(每月免费500万)……只能说,收费策略的制定还是有设计的。
也是吸取了一次教训,评估方案的时候还是得认真考虑全面,各个方面的事项都得仔细看看。
至于站点状态,还是老老实实的用数据库存取了。由于目前硬件资源有限,Redis与MongoDB放在同一台机器上,主要用来解决一些计算密集型数据的缓存。后面要是Redis的资源能解放出来,这种状态使用Redis来存会更合理一些。