故障排查
本指南帮助你快速定位和解决常见问题。
启动问题
无法启动 - 端口被占用
错误信息:
Cannot start web server on port 5426
解决方法:
# 查看端口占用
netstat -ano | findstr 5426
# 方法A:关闭占用程序
taskkill /PID 进程ID /F
# 方法B:换端口
.\rtkhub.exe -s -k conf\rtkhub.list -w 8080
配置文件错误
检查清单:
- 文件路径是否正确
- 文件是否存在
- 文件格式是否正确(UTF-8)
- 语法是否有误
连接问题
Web 页面无法访问
检查清单:
- RTKHUB 是否运行
- 地址:
http://127.0.0.1:5426 - 防火墙是否阻止
- 是否使用 IE(不支持)
验证方法:
# 检查进程
Get-Process rtkhub
# 检查端口
netstat -ano | findstr 5426
# 测试连接
curl http://127.0.0.1:5426
数据源无法连接
错误信息:
stream connect error: Connection refused
测试连接:
# TCP 测试
Test-NetConnection 192.168.1.100 -Port 2101
# Telnet 测试
telnet 192.168.1.100 2101
定位问题
无法获取固定解(FIX)
1. 基线过长
- RTK 模式:< 20km(理想 < 10km)
- PPP 模式:无距离限制
2. Age 过大
标准:
- 优秀:< 1s
- 正常:< 5s
- 可用:< 30s
- 异常:> 30s
解决:
- 检查数据源连接
- 检查网络延迟
- 尝试其他挂载点
3. 卫星数不足
标准:
- 最低:5 颗
- 推荐:≥ 8 颗
- 理想:≥ 12 颗
解决:
1. 检查天线安装
2. 调整配置
pos1-navsys = 5 # GPS+BDS
pos1-elmask = 15
3. 查看卫星天空图
4. Ratio 不达标
标准:
- 固定:> 3.0
- 浮点:1.0-3.0
- 质量差:< 1.0
解决:
- 增加观测时长
- 改善环境
- 优化配置
- 使用双频多系统
Age 持续很大
原因分析:
| Age 范围 | 可能原因 |
|---|---|
| 10-30s | 网络延迟 |
| 30-60s | 数据源中断 |
| > 60s | 数据源失败 |
排查:
- 检查数据源连接
- 检查网络
- 验证 NTRIP 参数
- 尝试其他数据源
Ratio 很低
改善方法:
- 延长观测时间(等待 1-5 分钟)
- 检查配置(双频、多系统)
- 改善环境(移除障碍物)
- 检查数据质量
:::danger 警告 降低 Ratio 阈值可能导致伪固定! :::
频繁失锁
原因:
- 信号遮挡
- 多路径效应
- 电离层扰动
- 配置不当
解决:
pos2-arlockcnt = 5 # 增加锁定计数
pos2-aroutcnt = 10 # 增加失锁计数
pos2-elmaskhold = 10 # 保持模式高度角
性能问题
内存占用过高
正常值:
- 单基线:启动 14MB,稳定 5.6MB
- 100 基线:约 560MB
优化:
- 关闭调试日志(
-t 0) - 限制历史数据
- 定期重启
CPU 占用过高
正常值:单基线 < 5% CPU(1Hz)
检查:
- 采样率是否过高
- 日志是否过多
- 基线数是否超限
磁盘占用过大
清理:
# 清理旧日志(30天前)
$date = (Get-Date).AddDays(-30)
Get-ChildItem logs\*.trace | Where-Object { $_.LastWriteTime -lt $date } | Remove-Item
日志分析
查看日志
# 实时查看
Get-Content logs\rtkhub_20260610.trace -Wait -Tail 50
# 搜索错误
Select-String -Path logs\*.trace -Pattern "error|failed"
常见日志消息
| 消息 | 含义 | 处理 |
|---|---|---|
stream connect error | 连接失败 | 检查地址/端口 |
no observation data | 无观测数据 | 检查天线 |
age of differential | Age 过大 | 检查差分数据 |
large residuals | 残差过大 | 检查环境 |
收集诊断信息
# 创建诊断包
$date = Get-Date -Format "yyyyMMdd_HHmmss"
$diagPath = "diag_$date"
mkdir $diagPath
# 复制配置和日志
Copy-Item conf\ $diagPath\ -Recurse
Copy-Item logs\*.trace $diagPath\ -Force
# 导出进程信息
Get-Process rtkhub | Out-File $diagPath\process.txt
# 打包
Compress-Archive $diagPath diag_$date.zip
提交问题
访问 GitHub Issues,附上:
- 问题描述
- 环境信息
- 配置文件(删除敏感信息)
- 日志片段
- 诊断包