DigitalOcean 成本优化指南 2026 — 实用降成本技巧
DigitalOcean 费用猛增通常不是因为价格本身偏高,而是因为购买的资源超过了实际需求,然后被遗忘——超大 Droplet、无人使用的关联 Volume、从不删除的旧 Snapshot。本指南介绍审计和降低 DigitalOcean 账单的实用方法,包含你今天就能运行的真实 doctl 命令。本文价格数据截至 2026 年 7 月。
调整 Droplet 规模
DigitalOcean 账户上最大的成本通常来自于 Droplet 规模与实际负载不匹配的情况。你可以在控制面板中手动检查每个,但如果有多个 Droplet,doctl 会快得多。首先用规格列出所有内容:doctl compute droplet list --format Name,Memory,VCPUs,Disk,Status,然后将每个 Droplet 名称与监控(一个免费的内置功能)中的 CPU 和 RAM 图表交叉参考。如果某个 Droplet 在数周内的 CPU 一直保持在 20% 以下,这表示它超大了。
DigitalOcean 将基础(共享 CPU)Droplet 分为细粒度的层级——从 512 MiB RAM/1 vCPU/10GB SSD 的 $4/月,到 2 GiB RAM/1 vCPU/50GB 的 $12/月,或 2 GiB RAM/2 vCPU/60GB 的 $18/月,再到 4 GiB/2 vCPU/80GB 的 $24/月。细粒度的定价阶梯意味着你可以向下调整而不会跳过不必要的规格。需要注意的是:通用目的 Droplet(专用 CPU)起价高得多——8GB RAM/2 vCPU/25GB SSD 为 $63/月,最高可达 $1,260/月。在没有真正需要专用、非共享 CPU 的情况下(如重型批处理)选择该层级会浪费成本,与典型网站使用的基础版相比。
一个经常被忽视的细节是:自 2026 年 1 月 1 日起按秒计费,最少 60 秒或 $0.01 中的较高者。这意味着为短期 CI 作业或脚本验证启动的测试 Droplet,然后立即销毁,不会像某些提供商那样产生整小时的租费。调整大小通过 doctl compute droplet-action resize droplet-id --size s-2vcpu-4gb --resize-disk=false 进行,其中设置 resize-disk=false 在仅降低 RAM/CPU 时保持现有磁盘。注意:磁盘缩小一旦调整就不可逆。
- 使用 doctl compute droplet list 获取所有 Droplet,在调整前交叉检查监控中的 CPU/RAM 图表。
- 基础 Droplet 从 $4/月(512 MiB)开始,最高 $96/月(16 GiB/8 vCPU),可细粒度调整。
- 没有真实需求时不要选择通用目的(专用 CPU)起价 $63/月——对于典型工作负载来说,比同等基础版贵得多。
- 利用按秒计费(60 秒最少或 $0.01)进行短期测试 Droplet;无整小时费用。
删除未使用的快照和存储卷
基于真实使用经验,快照和 Volume 是隐形的成本漏洞,积累而不被注意,因为它们在 Droplet 列表中不显示为明显的行项目——但每个月单独计费。块存储(Volume)费用为 $0.10/GiB/月;100 GiB Volume 运行 $10/月,500 GiB 运行 $50。快照——无论是 Droplet 还是 Volume——费用为 $0.06/GiB/月。
最常见的原因是在数据迁移或机器停用期间从 Droplet 分离的 Volume,但从未删除。它继续每月收费 $0.10/GiB。使用 doctl compute volume list --format ID,Name,SizeGigaBytes,DropletIDs 进行审计,寻找 DropletIDs 为空的行——这些是孤立的。类似地,用 doctl compute snapshot list --resource-type droplet --format ID,Name,ResourceId,SizeGigaBytes,Created 和 doctl compute snapshot list --resource-type volume 检查快照,找到你不再需要的旧备份。
一个可行的策略是每个 Droplet 仅保留 3 个最近的快照,然后用 doctl compute snapshot delete snapshot-id 清除较旧的快照。对于管理许多 Droplet 的团队,编写一个小脚本每周运行并列出和比较创建日期比手动审查更好。删除未使用的 Volume 时使用 doctl compute volume delete volume-id,确保数据不是关键的。这些小行项目成本在数十个资源上累积成真实的每月成本。
- Volume 费用 $0.10/GiB/月;快照(Droplet 和 Volume)费用 $0.06/GiB/月——隐形的每月消耗。
- 使用 doctl compute volume list 查找未附加的 Volume,寻找 DropletIDs 为空的项。
- 使用 doctl compute snapshot list --resource-type droplet/volume 审计旧快照;设置保留策略,如仅保留最后 3 个。
- 审计后使用 doctl compute snapshot delete 和 doctl compute volume delete 删除,确保数据不是关键的。
- 如果管理很多 Droplet,用小脚本自动化每周扫描,而不是手动检查。
设置账单提醒防止账单惊喜
云账单惊喜通常源于同一根本原因的重复:支出超出预算时没有提前警告。DigitalOcean 的控制面板中的账单提醒功能(账单菜单)让你设置阈值——例如,在月度预算的 80% 时提醒——这样你有时间在计费周期结束前调查和调整。这是仅网络设置;doctl 还没有账单提醒的直接命令。
你可以配合它的是监控的警告策略,这是免费的,涵盖每个 Droplet 的 CPU、RAM、磁盘和带宽。账单意外上升的一个原因是 Droplet 的带宽超支——例如,$12/月计划获得 2,000 GiB,$24/月获得 4,000 GiB。警告策略可以在带宽接近上限时向你发出警告,例如 doctl monitoring alert-policy create --type v1/insights/droplet/public_outbound_bandwidth --value 80 --compare GreaterThan --window 5m --entities droplet-id --emails [email protected],在不寻常的峰值——机器人、攻击——变成大额超支费用之前捕获它们。
最佳实践:堆叠两者。账户级别的账单提醒显示大局,监控警告在有风险的 Droplet(新启动、公共 API)上标记根本原因。两层意味着你既看到森林又看到树木。
- 在控制面板、账单菜单中设置账单提醒,在阈值(如预算的 80%)时发出警告(doctl 还没有直接命令)。
- 带宽超支是常见账单上升的罪魁祸首;检查每个计划的传输配额——$12/月 = 2,000 GiB,$24/月 = 4,000 GiB。
- 使用 doctl monitoring alert-policy create 按 Droplet 提醒带宽/CPU——免费,无额外成本。
- 在预算的 80% 而不是 100% 时提醒,以便在周期结束前留出时间响应。
- 结合账户级别账单提醒和每个 Droplet 的监控提醒获得全面可见性。
仅在必要时使用保留 IP
保留 IP 是静态地址,你可以在 Droplet 之间移动而不更新 DNS——对于故障转移很有用——但定价模型需要清楚理解。如果附加到活跃的 Droplet,保留 IP 不收取额外费用。如果保留但未附加到任何 Droplet(未附加),它费用为 $5/月或 $0.01/小时。保留 IPv6,相比之下,无论附加与否始终免费。
当你提前保留一个 IP 用于未来的故障转移计划,然后让它空置数周后才使用它,或在测试期间保留它并忘记将其附加到测试 Droplet 时,金钱就会泄漏。保留 IP 变成 $5/月的费用,零效用。使用 doctl compute reserved-ip list --format IP,DropletID,RegionSlug 检查,寻找 DropletID 为空的行——这些成本 $5/月未使用。如果你不计划很快使用它们,用 doctl compute reserved-ip delete ip-address 释放它们。
对于真实的高可用性架构,需要在主要和备用 Droplet 之间立即切换而不依赖 DNS 传播延迟(可能需要数分钟到数小时),保留 IP 值得成本。但对于单个 Droplet 且没有故障转移计划,或如果你已有带内置静态 IP 的负载均衡器,常规公共 IP 就够了,节省 $5/月。
- 保留 IP 附加到活跃 Droplet = 免费;未附加(孤立)= $5/月($0.01/小时)。
- 保留 IPv6 始终免费,无论附加与否。
- 使用 doctl compute reserved-ip list 扫描未使用的 IP,检查 DropletID 为空。
- 使用 doctl compute reserved-ip delete 释放空闲 IP,停止每月费用。
- 仅在真实故障转移场景下保留 IP——单个 Droplet 或负载均衡器设置不需要它们。
比较托管数据库与自托管成本
将托管数据库与 Droplet 上的自托管进行比较需要超越价签,因为便宜自托管通常用较低的前期成本换取隐藏的时间和风险。DigitalOcean 的托管数据库基础版(1 vCPU、1 GiB RAM)PostgreSQL 和 MySQL 运行 $15.15/月,Valkey(Redis 许可证改变后托管 Redis 的新名称——API/命令仍然兼容)$15.00/月,MongoDB $15.23/月。超出配额的额外存储费用 $0.215/GiB/月。 对于比较,自托管在附近的 Droplet 上——比如基础 2 GiB/1 vCPU $12/月或 2 GiB/2 vCPU $18/月——看起来每月便宜。但托管数据库包括自动每日备份、自动安全补丁、内置高可用性(付费版上有备用节点),以及特定数据库的监控。自托管意味着你通过 cron 管理 pg_dump 或 mysqldump 计划,手动应用补丁,自己设置复制,独立监控数据库健康。那个运维工作有真实成本,即使它不显示在账单上。 决策规则:对于你业务依赖的生产数据库,或没有专职数据库运维人员的团队,$3-6 的每月托管数据库溢价通常胜过数据丢失或错过补丁停机的风险。对于开发/暂存环境或你的团队已经做运维的副项目,在 Droplet 上自托管以降低成本和完整配置灵活性。
- 托管数据库基础版:PostgreSQL/MySQL $15.15/月,Valkey $15.00/月,MongoDB $15.23/月(1 vCPU/1 GiB RAM);额外存储 $0.215/GiB/月。
- 在 Droplet 上自托管 $12-18/月 在纸面看起来便宜但不包括自动备份/补丁/高可用性——你全做。
- 托管 Redis 变成了托管 Valkey(许可证分叉,API 兼容);Droplet 上的自托管 Redis 仍然叫 Redis。
何时应用这些技术(真实用例)
所有描述的成本削减技术根据你运行基础设施的方式有不同的回报时间。拥有只几个 Droplet 的小团队可能每月手动检查一次调整大小和设置账单提醒就够了——量低到足以手动审计。对于管理跨越数十个客户账户的 Droplet 的代理商或团队,通过每周运行的 doctl 脚本自动化快照、Volume 和保留 IP 扫描会带来更高的回报,因为小每账户浪费在乘以许多账户时累积成真实的金钱。 仅在工作时间使用的开发和暂存环境从按秒计费获得立即价值:运行脚本在一天结束时销毁 Droplet,在一天开始时从快照重新创建,仅为实际使用小时付费而不是 24/7。如果你的 CI/CD 管道已经连接了销毁/重新创建步骤,这工作得很好。 数据库架构决策——是否采用托管或保持自托管——在系统重新设计或当你开始因未打补丁的数据库出现停机时有意义。保留 IP 审计最适合在迁移或停用旧基础设施后,当孤立的资源经常隐藏时。 使用这个时序想法:小团队,每月手动检查;大型运营,每周自动化;架构变化,一次性分析;清理窗口,迁移后检查。
- 小团队,少数 Droplet:每月手动调整大小和账单提醒审查就够了。
- 代理商管理很多客户账户:每周运行 doctl 脚本扫描快照/Volume/保留 IP。
- 开发/暂存仅在办公时间使用:按计划销毁和从快照重新创建以按小时而不是 24/7 付费。
- 数据库架构决策:重新设计时或在错过补丁停机后比较托管与自托管。
常见错误及如何修复
最常见的错误是删除 Droplet 而没有先检查是否附加了 Volume。DigitalOcean 不会在 Droplet 删除时自动删除 Volume 以防止意外数据丢失;Volume 持续存在并继续收费 $0.10/GiB/月,之后未使用。每次停用后总是运行 doctl compute volume list 作为标准步骤,而不是只删除 Droplet 并继续。
第二个错误:混淆基础和通用目的(专用 CPU)Droplet。两者可能在不同价位有相似的 RAM 级别;在你的工作负载只是标准网络应用时选择专用 CPU 浪费金钱,起价 $63/月,甚至中等规格——远高于可比基础版。创建前总是验证位置名称。
第三:在测试后将保留 IP 未附加数周。每个未附加的 IPv4 每月无声成本 $5;如果你有多个孤立 IP,那会快速累积,并且根本不显示在 Droplet 列表中。每季度检查。
第四:从一开始从不设置账单提醒,然后在月底发现超支时已太晚修复。第五:低估托管数据库的存储增长。存储超支费用 $0.215/GiB/月;如果数据增长速度快于你的计划,那个附加可能超过你的每月基础费用。
- 删除 Droplet → 检查 doctl compute volume list 查找孤立;Volume 不会自动清除,费用 $0.10/GiB/月。
- 混淆基础与专用 CPU:创建前检查位置名称——专用 CPU 费用 $63+/月对基础较低阶。
- 忘记未附加保留 IP 数周;每个从 Droplet 视图隐藏的成本 $5/月。
最佳实践
控制 DigitalOcean 成本最可持续的方法是让审计成为可重复的常规,而不是一次性手动搜寻。在创建时通过团队、环境(开发/暂存/生产)或项目标记每个 Droplet、Volume 和快照。然后轻松过滤报告,例如,doctl compute droplet list --tag-name env:staging --format Name,Memory,VCPUs 仅查看暂存组。
构建一个捆绑所有提及内容的每月检查清单:针对 Droplet 大小检查 CPU/RAM 利用率,扫描无所有者的 Volume 和快照,检查未附加的保留 IP,验证账单提醒仍匹配当前预算,重新评估是否应将自托管数据库变成托管。对于大资源数的团队,将那些 doctl 命令合并到一个脚本中并通过 cron 或 CI 计划运行它而不是手动每月审查——节省工作并捕获更多。
还最大化已在平台中的免费功能:VPC 和云防火墙完全免费,应该是每个 Droplet 的标准,在添加外部安全工具之前。监控包括每个账户 1 个免费正常运行时间检查;在购买外部监控前使用它。静态网站应考虑应用平台的免费阶层——3 个免费静态站点——而不是旋转额外 Droplet;对于不需要后端的工作负载便宜得多。
- 在创建时标记每个 Droplet、Volume 和快照——按团队、环境、项目——便于以后 doctl 过滤。
- 构建每月检查清单:调整大小、流浪 Volume/快照、未附加保留 IP、账单提醒审查、自托管与托管数据库重新评估。
- 将 doctl 命令合并到脚本中并通过 cron 或 CI 运行而不是手动每月检查,适用于大型基础设施。
- 在采用付费安全工具之前,对所有 Droplet 强制实施 VPC 和云防火墙(都免费)。
- 静态站点应使用应用平台免费阶层(3 个免费应用)而不是额外 Droplet。