Square Cloud 采用基于容器的资源限制,以确保隔离性、稳定性,以及基础设施在各应用间的公平分配。
最低资源要求
托管在 Square Cloud 平台上的每个项目都有特定的最低资源要求,以确保最佳性能:
- 机器人: 至少需要 256 MB RAM。
- 网站: 至少需要 512 MB RAM。
- 缓存数据库: 至少需要 512 MB RAM。
- 通用数据库: 至少需要 1 GB RAM。
为什么会有 RAM 最低要求?
容器有强制性的运行开销:语言运行时、操作系统库和网络缓冲区。低于 256 MB 时,内核的 OOM Killer 往往会在启动或垃圾回收期间终止进程,从而使应用无法正常运行。
技术影响:
- 每个容器占用 1 个动态 IPv4 和 NVMe 存储 IOPS
- 最低分配可防止资源碎片化(吵闹邻居效应)
- 每日 snapshot 公式:
(Total RAM / 256) * 2(近似值;在更高等级套餐上,实际每套餐的额度可能更低)
影响数据: 在实施 256 MB 最低限制后,应用稳定性大幅提升,因 OOM(内存不足)导致的崩溃率降低了 97.7%。
CPU 分配
简而言之:CPU 根据所配置的 RAM 进行分配。增加 RAM 通常会获得更多的 vCPU。
单 vCPU 套餐
1 vCPU 套餐上的应用可获得全部容量,不受限流。
多核套餐(≥2 vCPU)
- 性能下限:拥有 ≥512 MB RAM 的应用至少获得 2 个 vCPU。
- 按比例扩展:
- Hobby(≤2 vCPU):每 512 MB RAM +1 vCPU
- Standard / Pro / Enterprise:每 1 GB(1024 MB)RAM +1 vCPU
| 套餐 | 套餐容量 | 已配置 RAM | 已分配 vCPU |
|---|
| Standard | 4 GB / 4 vCPU | 1 GB | 2 vCPU(下限) |
| Standard | 4 GB / 4 vCPU | 4 GB | 4 vCPU(上限) |
| Enterprise | 128 GB / 16 vCPU | 2 GB | 2 vCPU |
| Enterprise | 128 GB / 16 vCPU | 16 GB | 16 vCPU |
限流与安全限制
系统会强制执行套餐的 vCPU 限制,并通过均衡处理来保持分配公平。短期弹性可能在突发流量期间授予额外的 vCPU,但不作保证。
禁止的 CPU 用途:
- 加密货币挖矿
- 未经授权的、不受限制的密集型 ML 工作负载
- 蓄意的资源滥用
违规将导致 LACK_OF_CPU 状态并立即被停用。
网络限制
带宽随 RAM 扩展:每 256 MB RAM +50 Mbps。
| 已分配 RAM | 带宽 |
|---|
| 256 MB | 50 Mbps |
| 512 MB | 100 Mbps |
| 1 GB | 200 Mbps |
| 2 GB | 400 Mbps |
| 4 GB | 800 Mbps |
| 8 GB | 1600 Mbps |
| 10 GB | 2000 Mbps |
如需超过 2000 Mbps 的带宽,请联系支持团队。
存储限制
所有项目默认获得 10 GB NVMe 存储。
特性:
- 企业级 NVMe
- 在多次 deploy 和重启之间持久保留
- 高 IOPS 和高吞吐量
超出限制的状态
LACK_OF_RAM
触发时机:应用超出所分配的 RAM,或内核发出 OOM 信号。
处理动作:立即终止进程以保护宿主机稳定性。
如何修复:
- 使用性能分析工具查找内存泄漏(Node.js:
--inspect,Python:memory_profiler)。
- 减少内存中的缓存,或将缓存迁移到 Redis。
- 在控制面板中增加所分配的 RAM。
LACK_OF_CPU
触发时机:持续的 CPU 使用超出该分配的合理限制。
处理动作:进程以 LACK_OF_CPU 状态被终止。
如何修复:
- 分析 CPU 热点(Node.js:
0x,Python:cProfile)。
- 优化热循环、数据库查询和 I/O 密集型操作。
- 增加 RAM 以获得更多 vCPU(见 CPU 分配表)。
- 将繁重的工作卸载到异步 worker 或批处理作业。
权衡:增加 RAM 以获取 CPU 会提高成本。请衡量代码优化是否比向上扩展更划算。