故障排查
症状、原因和处理方法汇总。大多数问题通过以下 3 条命令即可缩小原因范围。
cd /opt/kopens/plantpulse-studio-docker
bash bin/status.sh # ① 컨테이너 상태 + 헬스 + 세션 수
curl -s localhost:5170/health # ② 서버가 살아 있는가
docker logs --tail 100 pp-studio-server # ③ 무엇이 잘못됐는가
查看日志
| 对象 | 命令 |
|---|---|
| Studio 服务器(最重要) | docker logs -f --tail 200 pp-studio-server |
| 网页(nginx) | docker logs --tail 100 pp-studio-web |
| 数据库(捆绑模式) | docker logs --tail 100 pp-studio-postgres |
| 构建工具边车 | docker logs --tail 100 pp-studio-agent-server |
| 脚本尾随 | bash bin/logs.sh (基础服务器) · bash bin/logs.sh studio-web |
| 自动备份 | tail -50 dist/backup.log |
| 应用会话容器 | docker ps --filter label=plantpulse-studio=1 确认名称后 docker logs <name> |
按时间范围缩小查询
docker logs --since 30m pp-studio-server
docker logs --since "2026-07-28T09:00:00" pp-studio-server
日志中不保留密钥
API 密钥和令牌不会记录在日志中(审计日志中仅保存指纹而非值)。向支持团队提供日志时,只需确认现场信息(如站点名称、设备名称)即可。
症状 → 原因快速对照表
| 症状 | 常见原因 | 检查 | 处理 |
|---|---|---|---|
| 网页完全打不开 | 堆栈已停止运行,或 80 端口被占用 | bash bin/status.shdocker logs pp-studio-web | bash bin/start.sh · 清理占用 80 端口的其他服务 |
| 网页能打开但登录失败 | 引导账户未设置,或无法到达平台 | grep STUDIO_LOCAL_USERS .envcurl -s localhost:5170/health | 在 .env 中指定账户后 bash bin/restart.sh |
| 登录突然失败(稍后重试) | 登录速率限制(每个 IP 每分钟 10 次) | docker logs --tail 50 pp-studio-server | 等待 1 分钟后重试 |
| 健康状态一直 DOWN,日志显示数据库认证错误 | 存在既有数据但更改了 PG_PASSWORD | docker logs pp-studio-postgresdocker logs pp-studio-server | 改回原密码,或在 PostgreSQL 内先修改账户密码 |
| 打开项目失败(500) | 缺少会话运行时镜像 | docker image inspect plantpulse-studio-runtime:latest | 重新运行 bash bin/start.sh (气隙环境使用 bin/load.sh 导入) |
| 预览·部署应用显示空白页(IP 访问) | 防火墙阻止 5171 端口 | curl -I http://<server-ip>:5171/ | 防火墙中打开 5171 端口 |
预览空白页 + 控制台 Mixed Content | Studio 使用 HTTPS 但应用资源以 HTTP 请求 | 浏览器开发者工具控制台 | 在代理中添加 X-Forwarded-Proto $scheme → 域名 |
| 修改代码后预览仍未变化 | 代理未升级 HMR WebSocket | 开发者工具 → 网络 → WS 请求是否为 101 | 在两个 vhost 中添加 Upgrade/Connection 标头 |
| 构建聊天耗时长,显示"连接错误: network error" | 代理无传输超时(默认 60 秒) | 检查代理 vhost 配置 | 在两个 vhost 中添加 proxy_read_timeout 3600s |
| 回复不是实时的而是一次性显示 | proxy_buffering 已启用(默认值) | 同上 | proxy_buffering off |
| 用任何域名访问都被转到错误的地方 | web nginx 配置加载顺序(第一个 server 是默认服务器) | docker exec pp-studio-web ls /etc/nginx/conf.d | 将 vhost 文件名改为以 zz- 开头 |
| 部署应用中实时数据返回 401 | ① 域名分离前登录的会话 ② 未设置平台密钥 | 尝试登出→重新登录 环境设置 → 平台选项卡 | ① 重新登录一次 ② 设置 PLATFORM_API_KEY 后 bin/restart.sh |
| 更改密钥但未生效 | docker restart 不会重新读取 .env | 环境设置界面是否显示"由环境变量管理" | bash bin/restart.sh (或 docker compose up -d --force-recreate) |
| 应用构建因"边车"错误失败 | 构建工具边车未启动 | docker ps --filter name=pp-studio-agent-servercurl -s localhost:8000/health | bash bin/restart.sh · 紧急情况下可在环境设置 → 代理中将构建引擎切换为内置 |
| 聊天显示"AI 提供商无法访问" | AI 地址或密钥错误,网关停止运行 | 环境设置 → AI 选项卡的连接测试docker logs --tail 50 pp-studio-server | 修正地址和密钥 → bin/restart.sh |
| 3D·大型应用构建中断 | 内存不足(会话容器上限 2 GB,主机可用) | docker stats · free -h | 减少同时打开的项目 · 增加主机内存 |
| 自动备份未运行 | cron 未安装或数据库无法访问 | cat /etc/cron.d/pp-studio-backuptail -50 dist/backup.log | 重新安装 sudo bash bin/install-backup-cron.sh · 使用 DRYRUN=1 bash bin/restore.sh 验证数据库访问 |
| 磁盘已满 | 备份·构建产物积累 | df -hdu -sh dist /var/lib/pp-studio/* | 减少保留数量(BACKUP_KEEP) · 清理旧备份 |
| 更新后仍显示旧界面 | 浏览器缓存或镜像拉取失败 | 浏览器强制刷新(Ctrl+Shift+R)bash bin/start.sh 输出的拉取结果 | 确认注册表登录后重新运行 bash bin/start.sh |
详细诊断
堆栈无法启动时
cd /opt/kopens/plantpulse-studio-docker
bash bin/status.sh
docker ps -a --filter name=pp-studio # Exited 인 컨테이너 찾기
docker logs --tail 200 pp-studio-server
如果容器持续重启(Restarting),日志最后一行会显示原因。最常见的是数据库连接失败和 .env 值错误。
grep -E '^(DATABASE_URL|COMPOSE_PROFILES|PG_|DATA_ROOT|PLATFORM_API_TARGET)' .env
一键判定安装是否"状态正常"
bash bin/smoke-install.sh
按顺序检查健康状态、无认证设置 API、网页响应、实际登录、会话运行时镜像、容器状态,并告知首个失败项。
应用会话(打开项目)问题
docker ps --filter label=plantpulse-studio=1 # 지금 떠 있는 세션 컨테이너
docker image inspect plantpulse-studio-runtime:latest >/dev/null && echo "런타임 이미지 OK"
- 会话容器在空闲 30 分钟后会自动回收 —— 列表中不存在不是错误。
- 重启服务器时,剩余的会话容器会自动清理。
- 多个用户同时打开时,内存占用会相应增加(用
docker stats确认)。
平台(实时数据)连接问题
症状通常是"聊天查询有效但无返回值"或"设备列表为空"。
- 在环境设置 → 平台选项卡中检查连接状态。
- 确认
.env中的PLATFORM_API_TARGET地址正确。 - 确认已设置
PLATFORM_API_KEY→ 密钥管理 - 在服务器日志中检查平台调用错误。
docker logs --tail 200 pp-studio-server | grep -i platform
如果平台短暂停止运行,观察器执行会自动跳过(重启后自动恢复)。
域名·代理问题
症状表现多样,但原因通常是 4 项配置中有一项缺失。请对照域名和反向代理的检查清单。
恢复手段
| 情况 | 处理 |
|---|---|
| 误操作导致堆栈异常 | 恢复 .env 后 bash bin/restart.sh |
| 数据损坏 | 备份和恢复 —— bash bin/restore.sh |
| 更新后出现问题 | 将 .env 中的 TAG 固定到之前的版本后 bash bin/start.sh |
| 部署的应用出现问题 | 在 Studio 界面的部署历史中回滚到之前的版本 |
提交支持申请时建议附加的信息
cd /opt/kopens/plantpulse-studio-docker
bash bin/status.sh > /tmp/pp-status.txt
docker logs --tail 500 pp-studio-server &> /tmp/pp-server.log
grep -vE 'KEY|TOKEN|PASSWORD' .env > /tmp/pp-env-safe.txt # 비밀 제외본
- 何时开始,在何种操作下发生的问题
- 屏幕截图(最好包含浏览器开发者工具控制台)
- 安装版本(
.env中的TAG)和访问方式(IP / 域名 / 是否使用代理)
传输日志·配置前的注意
.env 原始文件包含 API 密钥。请如上所述建立不含密钥的副本再传输。