Blame view

scripts/trace_indexer_calls.sh 2.76 KB
ed948666   tangwang   tidy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  #!/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_PORT="${EMBEDDING_PORT:-6005}"
  
  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. 连接到 6005 的客户端(Indexer 会调用 Embedding 服务)"
  echo "------------------------------------------"
  if command -v ss >/dev/null 2>&1; then
    ss -tnp 2>/dev/null | grep ":${EMBEDDING_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 "    - Embedding 服务 (${EMBEDDING_PORT}): POST /embed/text"
  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_PORT}\"'"
  echo ""