最低资源要求
托管在 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
示例
限流与安全限制
系统会强制执行套餐的 vCPU 限制,并通过均衡处理来保持分配公平。短期弹性可能在突发流量期间授予额外的 vCPU,但不作保证。 禁止的 CPU 用途:- 加密货币挖矿
- 未经授权的、不受限制的密集型 ML 工作负载
- 蓄意的资源滥用
LACK_OF_CPU 被停止。
网络限制
每个应用都拥有专属带宽,上传与下载相同,并随已分配的 RAM 按比例扩展:每 256 MB +50 Mbps。带宽为你的容器专门保留,不与其他用户共享,流量也从不计量或计费。 一些示例:
对于持续的高流量负载,支持团队可以为你配置专属集群。
启动加速。 每次启动都会获得远高于套餐带宽的加速:无论你的分配多少,安装依赖、下载模型或重建缓存都很快。
数据库拥有自己的专属带宽,双向相同,按其 RAM 配置。
存储限制
所有项目默认获得 10 GB NVMe 存储。 特性:- 企业级 NVMe
- 在多次 deploy 和重启之间持久保留
- 高 IOPS 和高吞吐量
超出限制的状态
当应用超出其资源时,Square Cloud 会停止它,在日志中写入一行带有原因的[SQUARE-SHIELD],并给你发送一封电子邮件。其他页面都会链接到这张表作为参考;解决方法在表格下方。
帮助中心在停机警报:RAM、CPU 和请求封锁中解释了这些警报邮件。
LACK_OF_RAM
应用达到了为它分配的 RAM,因此进程被停止以保护宿主机。 如何修复:- 使用性能分析工具查找内存泄漏(Node.js:
--inspect,Python:memory_profiler)。参见 Node.js 中的内存泄漏。 - 减少内存中的缓存,或将其迁移到 Redis。
- 在控制面板中增加应用的 RAM,或在配置文件中调高
MEMORY。
LACK_OF_CPU
应用在一段持续的时间内用尽了它的全部 vCPU,因此进程被停止。 如何修复:- 分析 CPU 热点(Node.js:
0x,Python:cProfile)。参见 CPU 占用 100%:优化建议。 - 优化热循环、数据库查询和 I/O 密集型操作。
- 增加 RAM 以获得更多 vCPU(参见 CPU 分配)。
- 将繁重的工作移到异步 worker 或批处理作业中。
CONTAINER_TEMPORARILY_SUSPENDED
日志中出现了[SQUARE-SHIELD] ABUSE_REQUESTS:应用在一段持续的时间内以滥用的频率向 Discord 或 squareweb.app 网站发送请求。这几乎总是由无限循环、没有延迟的重试或缺少缓存造成的,而不是真的很受欢迎。应用已被停止,在封锁结束之前,启动它会以 CONTAINER_TEMPORARILY_SUSPENDED 失败。
如何修复:
- 阅读邮件和最近的日志,找到发送这些请求的代码。
- 缓存你获取的数据,在重试之间加入延迟,并遵守所调用 API 的速率限制响应头。参见 Discord API 速率限制。
- 稍等片刻,然后再次启动应用。

