运维与监控
启动 / 停止 / 重启
bash
./fsd_d.sh # 停止旧进程 + 启动
./killfsd.sh # 停止1
2
2
优雅停机
服务在运行目录检测到文件 fsd_stop 时,会:
- 向所有在线客户端发送
$!!SERVER:<呼号>:Server restarting, please reconnect; - 冲刷发送缓冲后干净关闭连接(FIN),再退出。
因此重启时先 touch fsd_stop 并等待进程自行退出,可让客户端平滑重连。fsd_d.sh 已内置该流程(最多等 15 秒,超时才升级为 SIGTERM/SIGKILL)。
日志
- 日志文件:运行目录下的
fsd.log(由fsd_d.sh的 stdout 重定向写入)。 - 建议安装
logrotate_fsd.conf(copytruncate方式,进程无需重启)。 - 日志级别:
L_EMERG/ALERT/CRIT/ERR/WARNING/INFO/DEBUG;DEBUG含收发报文、位置等明细。
系统管理口(3010)
telnet 127.0.0.1 30101
常用命令:help、status/stat、servers、clients、info <呼号>、log、route、cert、say、wall、kill、metar、shutdown。
完整列表见 系统管理命令。
资源与限流
- 文件句柄:
fsd_d.sh会ulimit -n 65535,支持大量并发连接与数据库连接。 - 堆上限:通过环境变量
cjHeapSize(默认1gb)控制;大内存机器可调大,小内存机器勿设过大以免触发 swap。 - 连接上限:
fsd.conf的maxclients(同时受登录闸门与洪水检测保护)。 - 洪水保护:单连接每秒钟的数据量超过
floodLimit会被断开。
监控建议
- 观察
fsd.log中是否出现Flood、TIMEOUT、WRITEERR、MySQL告警。 - 用
stat/clients命令查看在线与统计。 - 关注进程的文件句柄数(
ls /proc/<pid>/fd | wc -l)是否随时间异常增长。
常见故障:跑一段时间后"连不上"
如果出现TCP 能连、但服务端不响应新连接,常见原因是连接表泄漏:断开连接未被回收,累计到 maxclients 后 accept 停止接纳。
该问题已在修复版中解决(
serve退出时按连接 ID 统一回收,并周期性清理空闲连接)。请确保使用最新二进制。
排查手段:
bash
# 系统管理口
telnet 127.0.0.1 3010
# 输入 stat / clients 查看计数1
2
3
2
3
或检查进程的 fd 数、日志中是否有大量未登录/异常连接。