各套餐
计算资源(同时运行,账户所有项目合计)
| 免费版 | 付费版 | |
|---|---|---|
| 单个实例上限 | 2 vCPU、4 GiB | 8 vCPU、16 GiB |
| 同时运行的实例 | 5 | 500 |
| vCPU 合计 | 10 | 500 |
| 内存合计 | 10 GiB | 1,000 GiB |
| 保留的休眠实例 | 20 | 10,000 |
创建速度
| 免费版 | 付费版 | |
|---|---|---|
| 每分钟创建的沙箱 | 10 | 600 |
| 单个项目每小时创建的沙箱 | 200 | 10,000 |
| 每小时创建的方块和版本 | 10 | 500 |
方块
| 免费版 | 付费版 | |
|---|---|---|
| 方块 | 10 | 500 |
| 单个应用的环境变量和机密 | 64 | 128 |
| 每小时创建的方块和版本 | 10 | 500 |
| 免费版 | 付费版 | |
|---|---|---|
单个应用在一个区域的实例数:未设 max_instances 时 / 最多 |
2 / 5 | 50 / 500 |
| 同时运行的实例 | 5 | 500 |
| vCPU 合计 | 10 | 500 |
| 内存合计 | 10 GiB | 1,000 GiB |
| 免费版 | 付费版 | |
|---|---|---|
| 单个方块在每个边缘节点每秒可接收的请求数 | 50 | 不限 |
应用在一个区域中的实例,就是它在那里的全部实例,无论运行、暂停还是休眠。键控实例就是沙箱:它们计入运行中和保持休眠的沙箱数,也计入每分钟和每小时创建的沙箱数,除此之外键的数量没有单独的限制。每秒请求数在每个边缘节点上单独计算,在请求到达实例之前:超过时,边缘节点返回 429 app_rate_limited,带 Retry-After: 1,这个请求不计数也不计费。带键的请求同样计算。
云盘和存储卷(单个项目)
| 免费版 | 付费版 | |
|---|---|---|
| 单个项目的云盘和存储卷 | 3 | 500 |
| 单个云盘上限 | 10 GiB | 1 TiB |
| 一个项目所有云盘合计 | 15 GiB | 不限 |
| 单个沙箱挂载的云盘和存储卷 | 8 | 8 |
云盘的分叉按其大小算作一个新云盘。云盘的快照不计数:一个云盘可以有任意多个快照,每个按它单独保留的数据计费。参见云盘的快照与分叉。
机密(单个项目)
| 免费版 | 付费版 | |
|---|---|---|
| 单个项目的机密 | 100 | 1,000 |
| 单个机密上限 | 64 KiB | 64 KiB |
| 提供给单个沙箱的机密合计 | 64 KiB | 64 KiB |
日志
| 免费版 | 付费版 | |
|---|---|---|
| 方块日志行的保留天数 | 3 天 | 30 天 |
| 日志导出目标 | 1 | 10 |
| 同时实时跟踪账户内应用日志的连接数 | 10 | 100 |
出站连接(每台机器)
| 免费版 | 付费版 | |
|---|---|---|
| 同时经由一台机器的出站代理建立的连接数,账户在该机器上的所有沙箱合计 | 1,024 | 8,192 |
如果沙箱的网络规则指定了主机,它的每个出站 TCP 连接(IPv4 和 IPv6 都一样)都要经过所在机器的出站代理;没有规则、或只有按地址的规则的沙箱则不经过。在每台机器上,账户在那里的沙箱无论属于多少个项目,都共享上面这个数量。超过时,它们的新连接会被拒绝,并提示稍后重试(普通 HTTP 连接的第一个请求得到 503 egress_connections_full,可重试 (retryable);TLS 握手以告警结束;其他连接会被重置),其他账户的连接不受影响。单个沙箱同时最多有 2,048 个这样的连接,两个方向 15 分钟都没有数据的连接会被关闭。
- 新连接的接纳速度,账户的沙箱合计最多每秒 2,000 个,瞬时最多 4,000 个。超出的连接会排队,按这个速度依次接纳:不会因此拒绝任何连接。
- 套餐变更时,付费版的份额在几秒内在每台机器上生效;免费版的份额与账单条款一样,从下个月起生效。份额变小后超出的已打开连接不会被切断:它们会自行结束。
套餐的限制如何运作
- 它们是配额,不是预留。即使在限制之内,机器满了时调用仍可能被拒绝 (503
no_capacity)。 - 达到限制只会拒绝新东西。运行中的东西继续运行。会超出运行数量或创建数量限制的调用返回 403
plan_cap_reached,param指明是哪项限制,错误信息说明限制是多少、已用了多少,以及如何获得更多:换到付费版,或请我们为你的账户提高。速率限制(每分钟创建数、每小时创建数)可重试 (retryable),带Retry-After。 - 唤醒也计算在内,无论怎样触发。唤醒休眠沙箱的调用(命令、文件、重启、快照、恢复)受运行数量限制的约束;通过 HTTP/1.1、HTTP/2 或 HTTP/3 发到沙箱链接或键控实例地址、会唤醒它们的请求也一样:超过限制时,它的机器以 403
plan_cap_reached拒绝请求,什么都不会被唤醒。连接休眠沙箱自己的 IPv6 地址,或它在项目网络上的地址,也一样:超过限制时,连接会被拒绝(重置)。休眠沙箱中到期的定时器(进程的定时器、wake_daily_at指定的时刻、数据库的pg_cron任务)也只在限制之内才会唤醒它:超过时,唤醒会等待,每隔几秒重试一次,直到账户有余量。应用的休眠实例只在账户有余量时才会为请求而唤醒;没有余量时,请求会送到它运行中的实例。每台有该账户休眠实例的机器,每隔几秒就会得知自己分到的那部分账户余量,各部分加起来就是总余量,所以在多台机器上同时唤醒的沙箱合计永远不会超出限制。应用的实例在应用自己的那份余量内唤醒:账户剩给它们的余量每隔几秒在应用的各个区域之间重新分配,依据是每个区域最近的用量,所以它在所有区域的实例合计也不会超出限制;需要超出份额的区域会在几秒内得到其他区域没有用到的部分。在账户还有余量留在另一台机器上时(通常在另一个区域),某台机器上的唤醒可能会被拒绝几秒钟;错误信息会说明这一点,各部分会在几秒内重新分配。发往一个休眠沙箱的一阵突发请求只会唤醒它一次,其中没有任何请求会因此被拒绝。 - 从不会因此被拒绝的:让沙箱休眠和删除。
- 换回免费版会保留你已有的一切:超出免费版规格的沙箱连同数据一起休眠,超出其数量的云盘和机密都保留。只有下一个新建的会被拒绝。
- 项目保有的:超出套餐数量的云盘会以 403
drive_limit_reached被拒绝,存储卷以 403volume_limit_reached,机密以 403secret_limit_reached。账户保有的(所有项目合计):超出套餐数量的应用以 403app_limit_reached被拒绝;环境变量和机密超出套餐允许数量的应用以 403env_limit_reached,大于套餐最大规格的实例以 403plan_size_exceeded。 - 可应要求提高的:账户能同时拥有多少、创建东西的速度、付费版上的云盘数量(软限制),以及企业账户最大 16 TiB 的云盘。账户用
POST /v1/limits/requests申请,答复会通过事件和邮件告知:参见提高限制。
GET /v1/account (caps) 显示账户的每项限制及当前用量;GET /v1/billing 显示套餐的限制。
达到限制时
每种因达到限制而被拒绝的情况,在错误页面上都有一节,它的 docs_url 就指向那里:说明它拒绝什么,以及怎样解除。标为可申请的,我们可以为单个账户提高:提高限制。
| 达到限制的对象 | 拒绝时返回 | 解除方式 |
|---|---|---|
| 账户同时运行的、保持休眠的,以及每分钟或每小时创建的数量;应用在一个区域中的实例 | 403 plan_cap_reached |
休眠或删除;付费版;可申请 |
| 项目的云盘和存储卷 | 403 drive_limit_reached, volume_limit_reached |
删除;付费版;付费版上的数量,以及企业账户的单个大小,可申请 |
| 最大的沙箱 | 403 plan_size_exceeded |
更小的规格;付费版 |
| 项目或沙箱的支出上限 | 403 spend_limit_reached |
提高你的上限 |
| 免费版的每日配额:CPU 时间、内存、请求、出站流量或日志 | 429 quota_used_up |
到 00:00 UTC;付费版 |
| 免费版账户同时保存的量:存储卷数据或 NVMe 缓存 | 403 storage_quota_reached |
删除;付费版 |
| 付费版每期的包含额度用完,且没有余额支付更多 | 403 balance_used_up;对访客返回 plan_limit_reached |
充值;下一个周期 |
| 项目的机密 | 403 secret_limit_reached |
删除;付费版 |
| 账户的应用;应用的变量和机密;应用用于签名键的机密 | 403 app_limit_reached, env_limit_reached, key_secret_limit_reached |
删除;付费版 |
| 项目的域名和共享变量;账户的日志导出目标 | 403 domain_limit_reached, variable_limit_reached, destination_limit_reached |
删除;付费版(仅限日志目的地) |
| 账户在一台机器磁盘上的份额 | 403 account_share_reached |
删除;稍后再试,换一台机器 |
| 应用在一个边缘节点上的每秒请求数 | 429 app_rate_limited |
一秒后再试;付费版 |
| 同时跟随日志的读取方 | 429 too_many_followers |
结束其中一个 |
| 账户在一台机器上的出站连接 | 503 egress_connections_full |
关闭连接 |
| 沙箱的云盘;账户的项目;用户的免费账户;沙箱逐个吊销的令牌 | 409 too_many_drives, too_many_projects, too_many_free_accounts, too_many_revoked_tokens |
减少数量 |
| 沙箱的存储卷;项目的 SSH 密钥 | 409 too_many_volumes, too_many_ssh_keys |
减少数量 |
| 从 SSH 网关到单个沙箱的同时连接数 | 503 too_many_forwards |
结束其中一个 |
| 只有付费版提供的功能:数据库的分层存储、浏览器会话的代理 | 403 paid_plan_required, proxy_not_on_plan |
付费版 |
| 项目的用量报告,一次一份 | 429 report_in_progress |
等另一份返回后再请求 |
| 登录和注册的尝试次数 | 429 rate_limited |
Retry-After |
| 边缘节点上来自同一地址的同时请求数;请求体 | 429 too_many_connections, 413 body_too_large |
减少同时请求;每次调用少发一些 |
| 每月充值的总额 | 403 trust_limit_exceeded |
信任等级提升;可申请 |
API 的限制
| 内容 | 限制 |
|---|---|
| 沙箱、快照、云盘和存储卷的名称 | 1 到 63 个小写字母、数字和连字符;不能以连字符开头或结尾 |
| 应用的名称 | 1 到 40 个小写字母、数字和连字符,以字母开头 |
标签 (metadata) |
每个沙箱 64 个(应用 60 个);键最多 64 个字符,值最多 1,024 个 |
| 环境变量 | 名称形如 [A-Za-z_][A-Za-z0-9_]*;合计 256 KiB |
| 请求 | 请求头最多 64 KiB。JSON 请求体:沙箱的调用最多 1 MiB,携带命令输入时(run、exec、…/stdin)最多 64 MiB,平台自身的调用最多 1 GiB(超出时返回 413 body_too_large,错误信息会说明上限) |
| 经过代理发往应用或链接的请求 | 请求体最多 100 MB,响应最多停顿 125 秒;用应用的 direct_url 可以更多(地址) |
| 读写文件 | 一次调用不限长度:字节边来边传,上限是沙箱的磁盘(用沙箱令牌写入时:每次调用最多 1 GiB) |
| 命令的输出 | 每条命令保留最后 16 MiB |
| 分叉 | 每次调用 1 到 64 个 |
| 列表 | limit 为 1 到 1,000,默认 100 |
Idempotency-Key |
1 到 255 个字符;记住 24 小时 |
| 单个沙箱的令牌 | 默认一小时;最多 30 天;逐个吊销、尚未过期的令牌同时最多 1,000 个(超过时返回 409 too_many_revoked_tokens:见单个令牌) |
| 网络规则 | allow 和 deny 各最多 1,000 条;http 和 inject 各最多 100 个主机 |
| 经过出站代理的连接 | 单个沙箱同时 2,048 个,在账户于该机器的份额之内(见上文) |
| 单个应用实例同时接受的请求数 | scale.concurrency,1 到 1,000,或不限 |
| 同时跟随账户应用日志的读取方 | 按套餐:见上文的日志(超过时返回 429 too_many_followers) |
| 镜像 | 最大 8 GiB,按镜像仓库中各层的大小和解包后的大小计:更大的镜像会让版本或沙箱以 image_unpack_failed 失败,错误会给出两种大小 |
| 共享变量 | 每个项目 1,000 个,值最大 32 KiB |
| 自定义域名 | 每个项目 100 个 |
| 对象 | 单次 PutObject 最大 5 GiB;分段上传最多 10,000 段,每段 5 MiB 到 5 GiB |