bolt部署

了解部署及其生命周期——概念和最佳实践以便更深入理解。

🗺️ 协调(Orchestration)

采用我们的云原生边缘计算方法,在几秒钟内启动新服务器以满足容量需求。我们将服务器视为 牲畜而非宠物arrow-up-right ——完全替换故障实例,而不是手动维护每个实例。

circle-info

您选择的编排方式将 影响您的运维成本、服务器成本和可扩展性.

circle-check

为了全面了解所有优缺点,让我们比较各种编排方法。

以匹配为边界(Match-Bound)

为现代工作室提供的黄金标准,带来 最简单的集成与最佳的成本效率.

👍 优点

  • 最佳的成本效率——按分钟实时扩展以满足玩家需求。

  • 最低的运维成本,由于无区域托管,Edgegap 自动化了 99% 的任务。

  • 最低的延迟,得益于 Edgegap 公有云基础设施中的 615+ 个站点。

  • 在意外流量激增时拥有最快的扩容速度(突发能力)。

  • 最高标准的安全性和防作弊(服务器权威)。

  • 意外服务器崩溃对玩家的影响最小,仅影响单场比赛。

👎 缺点

  • 采用新的编排思维模型最初需要一定的学习投入。

  • 运行超过 24 小时的服务器将被自动终止。

🧩 最适合

  • 对延迟敏感的游戏—— 当网络代码优化无法克服高延迟时:

    • 第一人称射击、格斗游戏、VR 与 XR(虚拟和扩展现实)等,……

  • 具有 按设计对比赛时长有上限的,

    • 大逃杀(Battle Royale), PvPvE,合作射击、MOBA、体育游戏、ARPG 与地牢爬行者等,……

🔎 可发现性

circle-info

Edgegap 根据每个区域的玩家活动自动上下扩展所有 615+ 个服务器位置。为成功做准备——无缝地 在 60 分钟内扩展到 1400 万并发用户arrow-up-right.

区域待命(Regional Standby)

传统模型,适用于 具有用户生成内容的持久世界和社交类 MMO 游戏.

👍 优点

  • 熟悉且易于理解的老派方法,适合久经沙场的资深开发者。

  • 最高标准的安全性和防作弊(服务器权威)。

  • 基于月度承诺的成本易于预测。

👎 缺点

  • 较高的托管成本——每个区域需要一个或多个空闲待命服务器(突发容量)。

  • 较高的运维成本——每个区域的扩展、运营和维护都需要重复投入。

  • 玩家基数较小的地区由于需加入较远的服务器会体验到高延迟。

🧩 最适合

  • 持久世界,其用户生成内容即使玩家下线也存储在服务器上。

    • MMO、带基地建设或物体放置的沙盒、提取类射击游戏等,…

  • 容忍延迟的游戏—— 当不需要服务器权威的实时物理时:

    • 移动游戏、合作游戏、集换式卡牌/构筑卡牌、回合制策略等,…

  • 异步多人, 服务器崩溃对玩家体验影响最小的情况:

    • 与幽灵竞速、掠夺敌方基地、计时建造/耕作类游戏等,…

  • 具有较重初始化流程的应用——当准备服务器需要数分钟时。

🔎 可发现性

circle-info

参见 托管集群 以了解 在 Edgegap 上自托管您的微服务和后端服务

点对点(Peer to Peer)

将开发精力从 专用服务器 转移到 用于非竞技游戏的中继网络代码(relay netcode).

相关主题:监听服务器、玩家托管权威、NAT 穿透。

👍 优点

  • 最低的托管成本,仅需中继服务器来解决 NAT 穿透问题。

  • 最低的运维成本——只需维护客户端构建和分发渠道。

  • 意外服务器崩溃对玩家的影响最小,仅影响单场比赛。

  • 易于实现且原型开发速度快,无需任何后端开发。

👎 缺点

  • 需要更多的点对点网络代码开发工作,需具备并发编程技能。

  • 延迟最差且对不利网络条件(例如移动网络)最为敏感。

  • 安全性最弱,易受中间人攻击和会话劫持的影响。

  • 当主机离开时有会话丢失风险,除非您实现自定义的主机迁移。

🧩 最适合

  • 合作与休闲游戏—— 当作弊不会破坏乐趣或影响游戏时,

    • 儿童游戏、探索类游戏、冒险类游戏等,…

🔎 可发现性

circle-check

📍 服务器放置(Server Placement)

无论您选择哪种编排方法,为一组玩家选择正确的服务器位置对于确保最佳 ping 和最优玩家体验至关重要。了解不同的服务器放置策略及其如何影响玩家。

circle-info

您的服务器放置策略将 影响玩家体验、留存率和游戏评价.

circle-check
circle-info

参见 部署 转移到 实时分析服务器放置,并进行大规模处理。

服务器评分(Server Score)

服务器评分策略使用 Edgegap 的专利方法, 为每场比赛单独优化服务器放置。执行非侵入式遥测以估算每位玩家到我们服务器位置的网络接近度,并选择提供最佳:

  • 响应性 ——为所有玩家平均提供最低延迟,

  • 公平性 ——为所有玩家提供均衡且公平的延迟。

circle-check

不响应的放置 ——服务器太远,所有玩家延迟都很高:

不公平的放置 ——延迟不均,一名玩家处于劣势:

良好放置示例 ——为所有玩家提供响应且公平的延迟:

circle-info

该策略 对托管一组彼此相距较远的玩家尤其有效 (北美与欧洲,或西海岸与东海岸),这在预制大厅中经常发生。

地理定位(Geolocation)

作为替代, 在部署时提供玩家的经纬度坐标或首选服务器位置的坐标 ,而不是利用自动遥测。该方法需要额外的客户端侧地理查询实现,完全依赖游戏开发者的方案。

circle-exclamation
circle-check

区域锁定(Region Lock)

服务器可能使用粗略的区域参数进行放置,方式为:

  • 基于玩家元数据(玩家账户数据库)自动为玩家选择,或

  • 在匹配期间由玩家选择,允许在客户端-服务器延迟较高的情况下进行放置。

triangle-exclamation
circle-check

🟢 连接质量(Connection Quality)

有些游戏(和有些玩家)对延迟或卡顿更敏感。尽管玩家反馈是指示大规模事件或回归缺陷的重要指标, 玩家可能缺乏对网络概念的深入理解 并且很容易将责任归咎于开发者、网络代码或服务器。

某些问题的根本原因可能对玩家不可见,因此工作室与托管提供商的合作可能至关重要。 Edgegap 的首要任务始终是提供尽可能好的服务。

如果您收到大量玩家反馈、遇到大范围故障或反复出现的问题,请通过我们平台的支持工单立即与我们联系。

低延迟(Low Latency)

玩家延迟由在以下各项之间传输数据的延迟组合而成:

Edgegap 通过将服务器放置得更靠近您的玩家来减少物理延迟,从而缩短响应时间并减少网络跳数。我们在 17 家云和裸金属提供商之间拥有部署点,为您提供 面向全球玩家的卓越 ping 表现.

全球服务器和互联网覆盖(不仅仅是 Edgegap)受限于诸如以下因素:

  • 基础设施可用性 ——某一区域的互联网连接质量可能不足,

  • 自然因素 ——高度复杂的服务器机架通常需要相对稳定的环境。

高可用性(High Availability)

全球各地不同位置的服务器可用性会随时间变化,一天中可能多次改变。Edgegap 会自动 按需扩展/缩减 位置 ,并会考虑:突发流量(burst traffic)

  • ——在 15 分钟内发起的部署, vCPU 要求

  • ——每次部署更多的 vCPU 会增加特定位置的总体需求, 提供商可用度

  • ——某些偏远位置的提供商选项较少, 机器可用性

  • ——某些位置可能仅提供 4 vCPU 或 8 vCPU 的机器, 工作室请求

  • 用于测试、质量保证、抢先体验、封闭测试或赛事。 所有应用的部署请求会被合并以评估位置需求。默认情况下,所有组织具有相同的分配优先级,且存在

为需要特定硬件或位置的企业客户添加私有服务器池的可能性 .

circle-check

玩家问题排查(Player Issue Resolution)

玩家问题可能源于服务器错误或提供商事件,也可能由第三方引起,例如本地 ISP、游戏服务、底层库的 bug、基础设施提供商或其他来源。

在排查玩家报告或事件时,考虑以下因素:

  • 匹配质量(matchmaking quality) ——玩家应彼此接近(同一区域),以便 部署 取得最佳效果:

  • 区域性问题:

    • 本地化的互联网服务提供商(ISP)可能会短时导致故障,

    • 某些地区(例如中国、俄罗斯)可能由于本地制裁而受限,

  • 缓存级别(caching level) ——Edgegap 会优先在有缓存的位置进行快速部署:

  • 最大部署时间 ——由于缓慢且繁重的初始化流程,部署可能失败:

    • 参见 应用与版本 要增加超时期限,

    • 将初始化步骤延迟到绝对必要时再执行,

  • 服务器镜像或集成问题.

circle-check
circle-info

向用户通知广泛存在的错误、临时问题和故障以减轻负面情绪。

🔄 部署生命周期(Deployment Lifecycle)

Edgegap 的部署会经历若干生命周期阶段,由部署状态表示。

1. 启动部署

用于 测试目的 的部署可通过以下方式启动:

用于 生产环境(在线) 应通过以下方式启动:

circle-check
circle-info

在使用 Deploy APIarrow-up-right测试时,您可以覆盖默认的 Dockerfile CMD 以使用自定义命令。

2. 部署中

一旦部署启动,我们的系统会迅速执行若干步骤:

  • 遥测——我们正在测量可用数据中心到每位玩家的网络响应性,

  • 部署——我们正在预留容量并准备启动您的服务器容器,

  • 容器启动——我们正在启动容器、安装依赖并初始化,

  • 后处理——我们正在添加日志存储、监控并完成部署。

circle-exclamation

3. 部署就绪(Deployment Ready)

您的容器已完全初始化,服务器正在启动。在几秒到一分钟内,您的服务器可能仍在初始化,在游戏引擎(或自定义运行时)完全准备好接受玩家连接之前,可能不会响应玩家请求。

circle-check

4. 部署错误(Deployment Error)

您的部署可能在任何时间点因意外原因进入错误状态。这在测试集成或测试新的服务器构建时更可能发生。

错误状态的部署不向您收费,且会在 24 小时后自动停止。

故障排查步骤:

circle-check

以便我们尽快调查!

5. 部署已停止(Deployment Stopped)我们不会在未经您指示的情况下停止您的服务器,

circle-info

——您在 中设置的分配时间已到期, 托管您部署的主机通过计划动作被删除。 一旦部署被停止, 我们会触发优雅终止(graceful termination) 通过发送 SIGTERM

信号给您的主进程,允许短暂的终止期。到期后,会发送

SIGKILL

可发现性

信号以停止部署。👀 可观测性(Observability)arrow-up-right允许游戏服务器与第三方互操作并获得运营洞察。

circle-check
circle-info

)以及每个内部端口对应的外部端口。 使用

部署标签可轻松标记您的部署

来自游戏服务器的出站流量(到客户端或后端)永远不会被阻止

  • 或过滤。Websockets(WS)和安全 Websockets(WSS)

    • 要在 Edgegap 上使用基于 websocket 的网络代码,您有两种选择: 应用与版本 转移到 托管证书(managed certificate)

    • ,1 分钟内设置完成,无需编写任何代码: 配置您的)

  • 使用 Websocket(WS)并启用 TLS 升级,使用 Edgegap URL 连接客户端(例如:

未捕获的服务器异常会导致部署的容器重启并使 TLS 安全无效。在这种情况下,

停止您的服务器

在 C++ 中获取变量值的 GetEnvironmentVariable

应用版本变量(App Version Variables)

circle-exclamation

以及下面的部署变量(Deployment Variables)。

自定义变量(Custom Variables)

  • 为每个部署定义最多 20 个自定义变量,每个变量可包含最多 4KB 的字符串数据。 避免使用下列保留名称,否则您的自定义变量将被覆盖! 通过读取 Edgegap 注入到您的服务器的变量来访问重要信息: .

    • 标识符(Identifiers)

    • ARBITRIUM_REQUEST_ID ——例如:.

  • f68e011bfb01 避免使用下列保留名称,否则您的自定义变量将被覆盖! 162.254.141.66 .

    • 唯一的部署 ID,也称为请求 ID。用于检索更多信息。

  • 部署 URL 始终具有格式 避免使用下列保留名称,否则您的自定义变量将被覆盖! {ARBITRIUM_REQUEST_ID}.pr.edgegap.net .

    • ARBITRIUM_PUBLIC_IP

  • 该主机的公网 IP 地址,可用于替代 URL 进行连接。 避免使用下列保留名称,否则您的自定义变量将被覆盖! ARBITRIUM_HOST_ID .

  • ARBITRIUM_DEPLOYMENT_TAGS 避免使用下列保留名称,否则您的自定义变量将被覆盖! tag1,tag2 以逗号分隔的用户定义部署标签, 私人舰队.

便于搜索和过滤

  • ARBITRIUM_PRIVATE_FLEET_ID 避免使用下列保留名称,否则您的自定义变量将被覆盖! PUBLIC_CLOUD ,或如果托管在 私人舰队.

  • 上的舰队 ID。 避免使用下列保留名称,否则您的自定义变量将被覆盖! 2000 资源规格(Resource Specifications)

  • ARBITRIUM_HOST_IN_PRIVATE_FLEET 避免使用下列保留名称,否则您的自定义变量将被覆盖! 256false

  • ,表示是否托管在 避免使用下列保留名称,否则您的自定义变量将被覆盖! 512ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY

,处理器频率,单位 MHz。

  • ARBITRIUM_DEPLOYMENT_VCPU_UNITS 避免使用下列保留名称,否则您的自定义变量将被覆盖! ,分配的 vCPU 单位(1024 = 1 vCPU)。.

    • 生命周期管理(Lifecycle Management) ARBITRIUM_DELETE_URL https://api.edgegap.com/v1/self/stop/9f511e17/660 可从部署内调用, 部署将被优雅地停止

  • ARBITRIUM_DELETE_URL 避免使用下列保留名称,否则您的自定义变量将被覆盖! 需要唯一的一次性.

  • ARBITRIUM_DELETE_TOKEN 避免使用下列保留名称,否则您的自定义变量将被覆盖! .

    • Authorization

    • 头中。 7df4cd933df87084b34ae80d8abde293 https://api.edgegap.com/v1/self/stop/9f511e17/660 可从部署内调用, 部署将被优雅地停止

  • 7df4cd933df87084b34ae80d8abde293 避免使用下列保留名称,否则您的自定义变量将被覆盖! ARBITRIUM_CONTEXT_URL.

可发现性

  • https://api.edgegap.com/v1/context/9170f5211e17/17 避免使用下列保留名称,否则您的自定义变量将被覆盖! 7777 仅可从部署内调用,返回更多部署详情。

  • 需要唯一的 避免使用下列保留名称,否则您的自定义变量将被覆盖! 31504 ARBITRIUM_CONTEXT_TOKEN

    • dfaf50b9333b9ee07b22ed247e4a17e6

  • ARBITRIUM_PORT_GAMEPORT_INTERNAL 避免使用下列保留名称,否则您的自定义变量将被覆盖! ,服务器监听的内部端口。 ARBITRIUM_PORT_GAMEPORT_EXTERNAL

circle-check
  • 每个端口会添加一组额外的已清理 避免使用下列保留名称,否则您的自定义变量将被覆盖! 变量:@Super Port! 私人舰队Ping 信标.

  • ARBITRIUM_PORT_SUPER_PORT_INTERNAL 避免使用下列保留名称,否则您的自定义变量将被覆盖! 139.177.198.69 ARBITRIUM_BEACON_ENABLED

  • true 避免使用下列保留名称,否则您的自定义变量将被覆盖! 30199,如果在

  • 上部署且 避免使用下列保留名称,否则您的自定义变量将被覆盖! 30456ARBITRIUM_HOST_BEACON_PUBLIC_IP

,最近信标的公网 IP。

circle-info

ARBITRIUM_HOST_BEACON_PORT_UDP_EXTERNAL ,用于通过 UDP 测量 ping。ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNAL

chevron-right,用于通过 TCP 测量 ping。结构化信息(作为字符串的 JSON)hashtag
chevron-rightARBITRIUM_PORTS_MAPPING: - 有关您的内部和外部端口的详细信息。hashtag

仪表板监控

我们的 仪表板arrow-up-right 提供用于监控服务器可扩展性并协助运维的实用工具。

分析

circle-check

🌟 升级到按使用付费层arrow-up-right 以解锁详细的服务器性能指标和洞察:

  • 总体洞察: 通过实时每个版本的服务器数量和资源使用概览来监控发布,

  • CPU 洞察: 排查因处理器密集操作导致的服务器卡顿,

  • 内存洞察: 缓解因超出分配内存导致的服务器重启,

  • 网络洞察: 检测低效的网络模式并优化网络代码。

部署地图

circle-check

在地图上预览部署位置、可用位置和估计玩家位置:

部署平衡点

circle-check

预览部署平衡点热力图并按以下内容筛选: 应用与版本。平衡点是与给定部署中每位玩家网络距离相等的近似位置:

circle-exclamation

部署日志

circle-check

部署日志显示有关以下内容的信息: 部署:

容器日志

circle-check

在出现问题或调试时检查您的游戏服务器日志:

circle-exclamation

容器指标

circle-check

查看容器指标(处理器、内存、网络)以:

  • 识别常见连接问题时的情况(例如), 部署,

  • 检测导致资源使用激增的低效实现模式,

  • 在特定场景中定位低效的资源使用,

  • 验证在优化期间服务器资源使用的变化,

  • 基准测试服务器初始化的资源消耗和持续时间。

历史指标以 1 分钟时间周期显示值平均,免费层可用。

🌟 升级到按使用付费层arrow-up-right 以解锁具有 1 秒时间间隔的精确指标。

circle-info

联系我们envelope 在发布前请求大规模发布的实时托管支持。

上下文与状态

可以以 JSON 格式检索附加部署信息:

circle-info

上下文 API(来自部署)需要 Context API 令牌,而状态 API 使用您的 Edgegap 令牌。

circle-exclamation

筛选部署

要在所有部署中快速搜索,您可以 使用我们的仪表板arrow-up-right:

使用 API 列出部署arrow-up-right 并通过后端集成应用筛选:

部署属性
运算符
示例值

等于(eq) 注入变量(Injected Variables) 不等(neq)

"ready" 注入变量(Injected Variables) "error"

等于(eq)

"7e709a0d8efd"

https://api.edgegap.com/v1/self/stop/9f511e17/660 注入变量(Injected Variables) 不在数组中(nin)

[ "7e709a0d8efd", "4ba353100b4b" ]

等于(eq) 注入变量(Injected Variables) 不等(neq)

"tagA"

https://api.edgegap.com/v1/self/stop/9f511e17/660 注入变量(Injected Variables) 不在数组中(nin)

[ "tagA", "tagB" ]

等于(eq) 注入变量(Injected Variables) 小于等于(lte) 注入变量(Injected Variables) 大于等于(gte)

等于(eq) 注入变量(Injected Variables) 不等(neq)

"my-app"

https://api.edgegap.com/v1/self/stop/9f511e17/660 注入变量(Injected Variables) 不在数组中(nin)

[ "my-app", "my-other-app" ]

等于(eq) 注入变量(Injected Variables) 不等(neq)

"1.0.0"

https://api.edgegap.com/v1/self/stop/9f511e17/660 注入变量(Injected Variables) 不在数组中(nin)

[ "1.0.0", "prod" ]

等于(eq)

变量: 注入变量(Injected Variables) PUBLIC_CLOUD

等于(eq) 注入变量(Injected Variables) 不等(neq) 注入变量(Injected Variables)

小于(lt) 注入变量(Injected Variables) 小于等于(lte) 注入变量(Injected Variables)

大于(gt) 注入变量(Injected Variables) 大于等于(gte)

5

circle-info

每个属性在单个请求中最多可以有 1 个筛选运算符。参见 API 参考 以了解更多。

按请求中出现的顺序按多个字段对结果进行排序:

部署属性
顺序

升序(asc) 注入变量(Injected Variables) 降序(desc)

升序(asc) 注入变量(Injected Variables) 降序(desc)

示例过滤查询:

chevron-right列出 错误中的部署 以进行故障排除和删除。hashtag

编码后的 URL:

格式化的 JSON 查询:

chevron-right列出 应用版本过期的部署 以确认某次发布已完成。hashtag

编码后的 URL:

格式化的 JSON 查询:

circle-check

Webhooks 与回调(Postbacks)

在游戏后端接收有关以下内容更改的简单 HTTP 通知, 部署 方法是通过在您的请求中指定一个 webhook URL, 部署 API 请求arrow-up-right。可用于:

  • 上线时:部署容器 已成功启动 (服务器在此之后开始初始化),

  • 发生错误时:部署无法启动并发生了一个 部署

  • 终止时: 部署 并且游戏服务器不再可访问。

Ready 与 Error 的 webhook 永远不会针对同一部署同时触发。

chevron-rightWebhook 示例负载hashtag
circle-exclamation
circle-info

Webhooks 观察部署生命周期,但不了解场景/关卡的初始化状态。要观察场景/关卡的加载进度,请在游戏服务器中实现自定义 webhook。

🚨 故障排除

在对部署进行故障排除时:

  1. 验证您的以下内容中没有错误, 部署部署,

  2. 在本地运行您的服务器以排除集成错误,

  3. 查看本页上的故障排除步骤,

  4. 通过以下方式与我们联系, 社区 Discordarrow-up-right 并包含您的部署 ID。

circle-info

参见 部署 以获取我们关于处理玩家社区反馈的建议。

chevron-right无法将客户端连接到服务器 - 请求超时。, 请求超时 , 连接失败(ConnectionFailed) ,或 端口验证失败.hashtag
chevron-right我的部署停止/重启后我无法再访问其日志。hashtag
  • 如果服务器进程由于异常而崩溃,我们的系统会尝试自动重启服务器。建议在本地测试您的服务器以找出根本原因。

  • 我们仅在部署期间保留日志,如果您希望在部署停止后检查日志,请 集成第三方日志存储arrow-up-right.

  • 参见 部署 以发现导致部署停止的所有原因。

chevron-right我的部署在 X 分钟后自动停止。hashtag
  • 免费层部署有 60 分钟的时间限制,请考虑升级您的帐户。

  • 根据我们的服务器消毒策略,为了基础设施维护并防止在部署未正确关闭时产生意外费用,所有部署将在运行 24 小时后终止。对于长时间运行的服务器,请考虑使用 私人舰队持久化.

  • 参见 部署 以发现导致部署停止的所有原因。

chevron-right我的部署已准备好,但在几分钟后仍无法连接。hashtag
  • 一旦部署处于 Ready 状态,您的游戏引擎初始化将开始。该过程可能需要几秒到几分钟不等,在此期间服务器不会接受玩家连接。

  • 考虑优化服务器初始化以减少此时间。

  • 游戏客户端应以 1 秒间隔重试连接,持续有限时间(取决于您的初始化时间),之后返回匹配流程。

  • 考虑添加加载场景,以便服务器可以在客户端同时执行初始化(以及在 Unreal 引擎中进行场景切换)时同步双方状态。

chevron-right我的 Meta Quest 设备抛出 HTTP 0:无法解析目标主机 .hashtag
  • 在为 Android 目标构建 Unity 应用时,Internet Access 权限可能会从输出的 APK 客户端构建产物中被自动移除。

  • 重新在以下位置添加权限(之后需要重新构建客户端):

    • 项目设置 / OpenXR / ⚙️ Meta Quest 支持 / 强制移除 Internet 权限(取消勾选)。

    • 播放器设置 / Internet Access(设置为 require)。

chevron-right如果玩家离开我的部署会发生什么?hashtag
  • 默认情况下,服务器不会拒绝玩家连接。玩家认证由您的开发者负责,因为可以使用多种不同的方法和玩家认证提供商。

  • 游戏客户端可以将连接信息保存在本地,以便在意外客户端崩溃时尝试重新连接。

  • 为允许玩家加入正在进行的游戏,请考虑使用 深入解析 注入变量(Injected Variables) 会话(Sessions)arrow-up-right.

chevron-right我的服务器在变为 Ready 后显示 100% CPU 利用率。hashtag
  • 这可能不是问题,因为游戏引擎在服务器初始化期间往往会执行大量 CPU 密集型操作。如果在部署启动后 2-3 分钟内 CPU 使用率没有下降,您可能需要优化服务器或增加应用版本的资源。

  • 降低 tick 率可以减少服务器执行的消息操作,从而影响 CPU 使用率。

  • 中检查日志。 如果您使用的是 Mirror 网络代码,您需要在arrow-up-right 中选择 NetworkManager(网络管理器) ,重新构建、推送并重新部署您的服务器。

  • 如果您使用的是 FishNet 网络代码,您需要在 中启用“Start on Headless”arrow-up-right 在您的 ServerManager(服务器管理器),重新构建、推送并重新部署您的服务器。

  • 在免费层中,您被限制为 1.5 vCPU 和 3GB 内存(RAM)。

  • 您可以在创建新应用版本时增加分配的资源。您可以在仪表板中复制应用版本并根据需要调整这些值,而无需重新构建服务器或镜像。

chevron-right我的部署反复重启并显示错误 `OOM kill`。hashtag
  • 此行为是由于超出分配内存量引起的。考虑通过对象池、压缩或在场景中移除不必要的对象来优化内存使用。

  • 确保您的项目正在加载包含您的默认场景, NetworkManager(网络管理器) 并且该场景已包含在 Unity 的构建设置中。

  • 在免费层中,您被限制为 1.5 vCPU 和 3GB 内存(RAM)。

  • 您可以在创建新应用版本时增加分配的资源。您可以在仪表板中复制应用版本并根据需要调整这些值,而无需重新构建服务器或镜像。

chevron-right有时,我的服务器内存(RAM)使用会飙升到很高的值,这会有问题吗?hashtag
  • 只要您保持在分配的应用版本内存范围内,这就不是问题。

  • 超出分配的应用版本内存将导致 `OOM kill`(见上文)。

chevron-right与在同一台机器上运行的其他服务器相比,我的服务器性能会受到影响吗?hashtag
  • 不会,我们的平台确保分配的资源不会被其他工作室或共享基础设施上的其他服务器使用。在 Edgegap 上,不存在噪音邻居问题。

最后更新于

这有帮助吗?