停止 (stop.sh)
Legacy native 页面
本页面仅适用于 2026.05 以下的 native 部署盒。容器模式 (2026.05+) 的盒子请参见
systemctl stop plantpulse-edge.service —— entrypoint 的 SIGTERM trap 会调用
内部 stop.sh(包含 graceful Cassandra drain)。
1. 用法
$PE_HOME/bin/stop.sh
执行顺序:
- root
stop.sh依次调用各组件的$PE_HOME/<module>/bin/stop.sh - 按 Tomcat → Node-RED → MQTT → timeseries-engine → timeseries-dashboard → Redis → Cassandra 的顺序停止
- 各 module stop 先尝试 graceful 停止,若在
STOP_TIMEOUT_SECONDS=20内未结束,则仅对该组件执行kill -9 - Cassandra 的 module stop 在停止前通过
nodetool flush+drain将内存中的脏数据同步到磁盘
正常输出:
PLANTPULSE EDGE STOP (module scripts, max 20s each) ...
SERVER STOP ... tomcat stopping ... KILL (timeout 20s)
FLOW TOOL STOP ... node-red stopping ... OK (3s)
MQTT STOP ... mqtt stopping ... OK (5s)
TIMESERIES ENGINE STOP ... timeseries-engine already stopped
TIMESERIES DASHBOARD STOP ... grafana stopping ... OK (0s)
CACHE STOP ... redis stopping ... KILL (timeout 20s)
DATABASE STOP ... cassandra stopping ... OK (1s)
STOP COMPLETED.
耗时约 60–90 秒。
2. 何时调用
- 备份之前 —— 使
backup.sh在 Cassandra commitlog 完全关闭的状态下运行。 - OS 重启之前 —— 未执行 drain 就关机时,下次启动会花更多时间回收 commitlog。
- 正式巡检 —— 修改逻辑/打补丁后,希望在干净状态下重新启动时。
请勿用于单纯的 Tomcat 重启
每次调用 stop.sh → start.sh 会导致 2–3 分钟停机。若只需应用代码/配置变更,请使用 restart.sh(仅重启 Tomcat,6 秒)。
3. 常见陷阱
| 现象 | 原因 / 解决 |
|---|---|
nodetool drain 阶段耗时过长 | 内存中存在大量 unflushed 数据。通常为分钟级 —— 请确认磁盘 I/O 是否空闲 |
每次都出现 KILL (timeout 20s) | 部分进程忽略 SIGTERM。平时无害,但若每次都发生,请检查该组件日志 |
停止后 ps.sh 中仍残留进程 | 检查该组件的 $PE_HOME/<module>/bin/stop.sh 匹配模式/端口检测 |
4. 验证
$PE_HOME/bin/ps.sh
# 출력이 비어있어야 정상
5. 了解更多
- 重新启动请参见:启动 (
start.sh) - 单纯重启:重启 (
restart.sh) - OS 重启:
reboot.sh(单纯的 OS reboot —— 建议在stop.sh之后调用)