trace_indexer_calls.sh 2.94 KB
#!/bin/bash
#
# 排查「谁在调用索引服务」的脚本
# 用法: ./scripts/trace_indexer_calls.sh
#

set -euo pipefail

cd "$(dirname "$0")/.."
source ./activate.sh 2>/dev/null || true

echo "=========================================="
echo "索引服务调用方排查"
echo "=========================================="

INDEXER_PORT="${INDEXER_PORT:-6004}"
EMBEDDING_TEXT_PORT="${EMBEDDING_TEXT_PORT:-6005}"
EMBEDDING_IMAGE_PORT="${EMBEDDING_IMAGE_PORT:-6008}"

echo ""
echo "1. 监听端口 6004 的进程(Indexer 服务)"
echo "------------------------------------------"
if command -v lsof >/dev/null 2>&1; then
  lsof -i :"${INDEXER_PORT}" 2>/dev/null || echo "  (无进程监听或 lsof 无权限)"
else
  ss -tlnp 2>/dev/null | grep ":${INDEXER_PORT}" || echo "  (无进程监听)"
fi

echo ""
echo "2. 连接到 6004 的客户端(谁在请求 Indexer)"
echo "------------------------------------------"
if command -v ss >/dev/null 2>&1; then
  ss -tnp 2>/dev/null | grep ":${INDEXER_PORT}" || echo "  (当前无活跃连接)"
elif command -v netstat >/dev/null 2>&1; then
  netstat -tnp 2>/dev/null | grep ":${INDEXER_PORT}" || echo "  (当前无活跃连接)"
else
  echo "  请安装 ss 或 netstat"
fi

echo ""
echo "3. 连接到 Embedding 服务的客户端"
echo "------------------------------------------"
if command -v ss >/dev/null 2>&1; then
  ss -tnp 2>/dev/null | grep -E ":${EMBEDDING_TEXT_PORT}|:${EMBEDDING_IMAGE_PORT}" || echo "  (当前无活跃连接)"
fi

echo ""
echo "4. 检查定时任务(cron)"
echo "------------------------------------------"
(crontab -l 2>/dev/null | grep -i indexer) || echo "  当前用户无相关 cron"
if [ -d /etc/cron.d ]; then
  grep -l -i indexer /etc/cron.d/* 2>/dev/null || true
fi

echo ""
echo "5. 端口与逻辑说明"
echo "------------------------------------------"
echo "  - Indexer 服务: 端口 ${INDEXER_PORT}"
echo "    启动: ./scripts/start_indexer.sh 或 python main.py serve-indexer"
echo "    接口: POST /indexer/reindex, POST /indexer/index, POST /indexer/build-docs 等"
echo ""
echo "  - 调用方(文档说明): 外部 Java 程序或 curl 等 HTTP 客户端"
echo "    全量: curl -X POST http://localhost:${INDEXER_PORT}/indexer/reindex -d '{\"tenant_id\":\"170\",\"batch_size\":500}'"
echo "    增量: curl -X POST http://localhost:${INDEXER_PORT}/indexer/index -d '{\"tenant_id\":\"170\",\"spu_ids\":[\"123\"]}'"
echo ""
echo "  - Indexer 内部会调用:"
echo "    - Text Embedding 服务 (${EMBEDDING_TEXT_PORT}): POST /embed/text"
echo "    - Image Embedding 服务 (${EMBEDDING_IMAGE_PORT}): POST /embed/image"
echo "    - Qwen API: dashscope.aliyuncs.com (翻译、LLM 分析)"
echo "    - MySQL: 商品数据"
echo "    - Elasticsearch: 写入索引"
echo ""
echo "6. 实时监控连接(按 Ctrl+C 停止)"
echo "------------------------------------------"
echo "  运行: watch -n 2 'ss -tnp | grep -E \":${INDEXER_PORT}|:${EMBEDDING_TEXT_PORT}|:${EMBEDDING_IMAGE_PORT}\"'"
echo ""