#!/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 ""