人工支持只有两条通道:控制台工单和邮箱。两条都由值班工程师直接处理,没有客服话术转接这一层。
| 级别 | 典型场景 | 工单首响 | 进展更新 | 建议渠道 |
|---|---|---|---|---|
| P1 | 实例不可达 / 节点级故障 | ≤ 30 分钟 | 每 60 分钟 | 控制台工单 |
| P2 | 单项功能受损(如 VNC 可用但 SSH 不通) | ≤ 2 小时 | 每 4 小时 | 控制台工单 |
| P3 | 使用咨询、配置求助 | ≤ 4 小时 | 按处理进展 | 工单或邮件 |
| P4 | 建议反馈、商务与合作 | ≤ 24 小时 | 按处理进展 | 邮件 |
支持团队按 UTC+8 与 UTC-8 双时区排班,SLA 按自然小时计,周末与节假日同样生效。级别由我们按影响面判定,不需要你在工单里自己标注。
重启、重装、重置凭据都不需要人工介入。控制台的电源操作走带外通道,系统彻底卡死也能生效——这是独享物理机的好处之一。
路径:控制台 → 实例 → 电源 → 重启。整机断电再上电,约 90 秒恢复;磁盘数据不受影响,但未保存的工作会丢失。VNC 黑屏、系统无响应时的首选动作。
路径:控制台 → 实例 → 系统 → 重装。可从版本列表中选择目标 macOS;重装是全盘擦除,25~40 分钟完成,新的 VNC/SSH 凭据通过邮件下发。每个计费周期含一次免费重装。
路径:控制台 → 实例 → 访问 → 重置 VNC 密码。即时生效,新密码只在页面上显示一次,请立即保存。忘记密码、怀疑泄露或交接机器时使用,不影响 SSH 与机内数据。
路径:控制台 → 实例 → 访问 → SSH 公钥。粘贴新公钥后 60 秒内写入 authorized_keys,可勾选同时吊销旧密钥。支持 ed25519 与 RSA(≥3072 位),一台实例最多保留 5 把。
按步骤走,每一步都有可核对的输出。走完仍未解决,把最后一步的命令输出贴进工单,我们能直接从中断点接手。
症状:VNC 客户端显示已连接,画面纯黑或停在灰屏,鼠标键盘无响应。
$ sudo launchctl list | grep -i screensharing
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -restart -agent -console
Done.
$ sudo pmset -a displaysleep 0 sleep 0
症状:ssh 长时间无响应后报 Operation timed out,或立刻返回 Permission denied。
sudo pfctl -d 临时停用规则再修正。$ ping -c 5 <实例公网IP>
$ chmod 600 ~/.ssh/id_ed25519
$ ssh -vvv -o ConnectTimeout=10 dev@<实例公网IP>
$ sudo pfctl -sr | grep 22
症状:xcodebuild 在 CI 里报 errSecInternalComponent 或 User interaction is not allowed,本地 GUI 构建却正常。
$ security unlock-keychain -p "$KEYCHAIN_PASS" ~/Library/Keychains/login.keychain-db
$ security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASS" ~/Library/Keychains/login.keychain-db
$ security find-identity -v -p codesigning
1 valid identities found
runner 安装包从你所用 CI 平台的 runner 设置页下载 arm64 macOS 版本,以下命令在实例的 SSH 会话里执行即可。
$ mkdir ~/actions-runner && cd ~/actions-runner
$ tar xzf actions-runner-osx-arm64.tar.gz
$ ./config.sh --url <仓库或组织地址> --token <注册令牌> --labels self-hosted,macos,arm64
$ ./svc.sh install && ./svc.sh start
√ runner service started
用 svc.sh 装成 launchd 服务而不是前台跑 run.sh:断线自动重连、实例重启后自动拉起,不需要额外保活脚本。注册令牌有效期只有一小时,过期重新生成即可。
$ brew install gitlab-runner
$ gitlab-runner register --executor shell --url <你的 GitLab 地址> --token <认证令牌> --tag-list macos,xcode,arm64
$ brew services start gitlab-runner
Successfully started `gitlab-runner`
executor 选 shell,构建直接跑在 macOS 用户会话里,能完整访问 Xcode 工具链与模拟器。并发数建议保持 1:Apple Silicon 上单 job 独占全部性能核,比两个 job 抢核更快。
别把 CI 证书混进 login 钥匙串。建独立的 build.keychain,超时设 21600 秒(6 小时),每个 job 开头执行一次 unlock,签名弹窗问题从根上消失。
给 xcodebuild 传 -derivedDataPath 指向 job 之外的固定目录。独享物理机上缓存跨 job 常驻磁盘,大型 Swift 项目增量编译比全量快 40%~70%。
用 xcrun simctl create 预建常用机型并保持常驻,UI 测试跳过模拟器冷启动,单 job 通常省 60~90 秒。实例不回收,预建一次长期有效。
$ security create-keychain -p "$PASS" build.keychain
$ security set-keychain-settings -lut 21600 build.keychain
$ security unlock-keychain -p "$PASS" build.keychain
$ xcodebuild -scheme App -derivedDataPath ~/ci-cache/DerivedData build
| 节点 | 测试地址 | 机房区域 | 说明 |
|---|---|---|---|
| 东京 | ping.tyo.armmini.com | 东亚 | 与东京实例同出口,延迟可代表实际体验 |
| 首尔 | ping.icn.armmini.com | 东北亚 | 与首尔实例同出口 |
| 硅谷 | ping.sjc.armmini.com | 北美西岸 | 与硅谷实例同出口 |
$ ping -c 20 ping.tyo.armmini.com
20 packets transmitted, 20 received, 0% loss
$ mtr -rwzbc 100 ping.tyo.armmini.com > mtr-report.txt
-r 报告模式 -c 100 采样一百个包,约两分钟
mtr -rwzbc 100 到对应节点测试地址,保存报告。机房出口侧的问题我们当天处理;跨网中间链路的丢包需要与上游逐跳核对,定位通常需要 1~2 个工作日,处理进展会在工单里持续更新。
所有节点全年 365 天连续运行,不存在需要你预约配合的服务中断;节点侧硬件更换以备机顶替完成,不占用你的使用时间。真出了故障,流程如下,全程可核对。
监控告警触发,值班 SRE 介入。五节点均为 7×24 有人值守轮班。
确认影响面,向受影响用户发送第一封事故邮件:症状、范围、预估恢复时间。
每 60 分钟邮件更新一次进展,直到恢复,不玩「静默修复」。
按月度 99.5% 在线承诺核算故障时长,应补偿的服务时长自动计入账户,不需要主动申请。
复盘报告发布:根因、完整时间线、改进项,通过邮件发送并同步在控制台公告。
时长补偿的具体档位与除外条款(不可抗力、用户自身操作)见服务条款第五章。如果你监测到的中断没收到我们的事故邮件,请直接提 P1 工单,我们按你的监测记录核对。
换节点、从其他服务商或本地 Mac 迁到 ArmMini,工程师提供一对一免费协助。范围和边界如下,先看清再预约。
$ rsync -avzP --exclude 'Library/Caches' -e ssh ~/work/ dev@<新实例IP>:~/work/
-P 支持断点续传,东京→首尔同区段实测约 45~80MB/s
sent 182.4G speedup is 1.31
把最后一步的命令输出贴进工单,值班工程师从你的中断点直接接手。故障类工单首响不超过 2 小时,周末与节假日同样生效。