微服务心跳拨测需用 curl + parallel 并发请求 /actuator/health 等接口,响应码 200 且 body 含 "status":"up" 才健康;脚本应支持超时控制、重试、结构化输出与统计。

明确拨测目标与接口规范
微服务心跳接口通常为 HTTP GET 请求,路径类似 /actuator/health 或 /health,响应状态码为 200 且 body 包含 "status":"UP" 才算健康。需提前整理服务清单(如 CSV 或纯文本),每行一个完整 URL:
https://svc-order.example.com/actuator/health
https://svc-user.example.com/health
https://svc-payment.example.com/health
用 curl + parallel 实现高并发轻量拨测
避免 for 循环串行耗时,推荐使用 GNU parallel 配合 curl 并发执行。安装依赖后(apt install parallel curl 或 yum install parallel curl),脚本核心逻辑如下:
- 设置并发数(如 50),防止压垮本地资源或触发目标限流
- 每请求加超时(
--max-time 5)、禁用进度条(-s)、只取状态码和关键响应字段 - 用
parallel -j 50读取 URL 列表,逐个发起非阻塞请求 - 通过
curl -o /dev/null -w "%{http_code}|%{time_total}\n"提取结果,避免下载响应体
结构化采集与实时判定健康状态
单次拨测需输出可解析的结构化结果,例如:
父母的功课——育儿心理学对话支持技能(心虫增强版)。提供结构化对话、情绪识别、场景匹配与安全检测;可选Python脚本(scripts/)在SKILL_DIR/data/本地存储评估历史、洞察与会话状态,不对外传输。核心路径:觉察(看见防御)→接纳(慈悲是……
https://svc-user.example.com/health|000|5.001 ← 超时或无法连接
https://svc-payment.example.com/health|200|0.093
后续可用 awk 快速统计:awk -F'|' '$2 != "200" {print "DOWN:", $1, "code="$2, "time="$3}' results.log
也可用 grep -c '200$' 计算成功率。
封装为可调度、带重试与日志的完整脚本
生产环境建议加入基础健壮性:
- 每次运行生成唯一时间戳日志目录(如
logs/20240520-142301/) - 对失败 URL 自动重试 2 次(用
retry_curl()函数封装 curl + sleep) - 记录开始/结束时间、总请求数、成功数、平均延迟、异常列表
- 支持传参指定 URL 文件路径、并发数、超时秒数,例:
./healthcheck.sh -f services.txt -j 30 -t 3
不依赖 Python 或 Java,纯 Shell + 标准工具链即可支撑数千服务规模的分钟级拨测,关键是控制并发粒度与超时策略,避免把探测本身变成干扰源。










