跳到主要内容

停止 (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

执行顺序:

  1. root stop.sh 依次调用各组件的 $PE_HOME/<module>/bin/stop.sh
  2. 按 Tomcat → Node-RED → MQTT → timeseries-engine → timeseries-dashboard → Redis → Cassandra 的顺序停止
  3. 各 module stop 先尝试 graceful 停止,若在 STOP_TIMEOUT_SECONDS=20 内未结束,则仅对该组件执行 kill -9
  4. 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.shstart.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. 了解更多