trace_indexer_calls.sh
2.94 KB
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
75
76
#!/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 ""