Troubleshooting
本页聚焦应用开发者在使用 NE503 平台 SDK 和 API 时遇到的常见问题。平台服务本身的排查请参考 Troubleshooting Guide。
1. 容器应用排查
1.1 应用安装失败
安装失败常见三类:镜像拉取(网络/镜像源)、清单解析(app.yaml 语法)、权限(运行用户须属于 aipc 组)。
诊断命令:
# 查看安装日志(清单字段错误、镜像导入失败均会在此报具体原因)
journalctl -u app-manager -f
# 本地预检 app.yaml 语法
yamllint app.yaml
1.2 容器启动失败
启动失败多见于资源不足(见 resources 配额)或依赖的上游服务未就绪;容器沙箱有安全限制(drop capabilities 等)。真机最常见的 parent snapshot/no space 见 §4 #5。
诊断命令:
# 查看容器日志
journalctl -u app-manager | grep -i "container"
# 检查系统资源
free -h
df -h
systemd-cgtop
# 检查 containerd 状态
systemctl status containerd
1.3 健康检查失败
app.yaml 支持 HTTP / 执行命令 / TCP 三种健康探针;失败时按探针类型手动复现(curl / aipc-cli app exec / netstat)。
诊断命令:
# 查看健康检查日志
journalctl -u app-manager | grep -i "healthcheck"
# 手动在应用容器内执行健康检查命令
aipc-cli app exec <app-id> -- /path/to/healthcheck.sh
# 查看应用状态
aipc-cli app info <app-id>
2. 视频流集成排查
2.1 WebSocket 断连
WebSocket 断连常见于客户端超时、服务端报错或网络波动;接入侧(含推荐的重连策略)见「视频集成」(即将发布)。
诊断命令:
# 查看 WebSocket 连接日志
journalctl -u platform-api | grep -i "websocket\|h264"
# 测试 WebSocket 连接
wscat -c ws://localhost:8080/api/v1/h264/main
3. 事件总线排查
3.1 事件发布失败
发布失败先确认 event-bus 运行中;Topic 须用 app/<app_id>/<event> 格式(如 app/person_alert/person_detected)。
诊断命令:
# 检查 event-bus 状态
systemctl status event-bus
# 查看事件日志
journalctl -u event-bus -f
# 测试事件发布
aipc-cli event publish app/demo/started '{"message": "test"}'
3.2 订阅失败
订阅失败多为 Topic 权限未声明(app.yaml 的 permissions.events.subscribe)或客户端断连后未重连。
诊断命令:
# 确认 event-bus 运行
systemctl status event-bus
# 订阅测试,验证 Topic 权限
aipc-cli event subscribe "app/<your_app>/*"
4. 实战部署排查清单(真实验证)
以下是真实部署 NE503 容器应用时验证过的常见问题,按「现象 → 根因 → 修复」组织。前 3 节是通用快速排查,本节是实战中反复出现、需要具体操作的硬核问题。
4.1 速查表
| # | 现象 | 根因 | 修复 |
|---|---|---|---|
| 1 | 构建时 apk add ... I/O error | Docker Desktop + buildx + alpine 偶发 | 重新执行一次构建命令 |
| 2 | 启动返回 DeadlineExceeded | 首次载入镜像进 containerd 超 10s gRPC 超时 |