e50924ed
tangwang
1. tags -> enrich...
|
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
|
彻底清除掉命令行交互方式的代码,改造为提供 HTTP 接口,端口6001。
并提供scripts/service_ctl.sh的方式管理服务的启停
返回分类结果的list(results):list由多个dict组成,每个dict的key为对应的分类任务,value是三元组,即值、打分、概率(如果值为none则该项不输出)
完善日志系统,当前cli方式输出的重要信息,在日志以及http接口的details字段体现。
提供一个压测脚本放到本项目的合适的目录下,作为压测工具。该压测工具针对每条请求打印出结果,并最后给出性能指标,参考:
#!/bin/bash
# 默认值
concurrency=${1:-1}
top_lines=${2:-100}
# 固定查询文件路径
query_file="/data/saas-search/scripts/evaluation/queries/queries.txt"
# 检查文件是否存在
if [ ! -f "$query_file" ]; then
echo "错误: 查询文件不存在: $query_file" >&2
exit 1
fi
# 检查 jq 是否可用
if ! command -v jq &> /dev/null; then
echo "错误: 需要安装 jq 来解析 JSON" >&2
exit 1
fi
url="http://127.0.0.1:6001/..."
max_jobs=$concurrency
job_count=0
# 读取文件前 top_lines 行,每行作为一个 query
while IFS= read -r query; do
# 跳过空行
[ -z "$query" ] && continue
# 启动子进程执行请求
(
# 安全构建 JSON payload
payload=$(jq -n --arg q "$query" '{query: $q}')
# 发送请求并获取响应
response=$(curl -s -X POST "$url" \
-H 'Content-Type: application/json' \
-d "$payload")
# 提取 results 字段(紧凑 JSON 格式)
results=$(echo "$response" | jq -c '.results')
# 输出 query 和对应的 results
printf "%s\t%s\n" "$query" "$results"
) &
# 控制并发数量
((job_count++))
if (( job_count >= max_jobs )); then
wait -n # 等待任意一个后台进程完成
((job_count--))
fi
done < <(head -n "$top_lines" "$query_file")
# 等待所有剩余后台进程完成
# 在这里统计处性能情况,指标:
平均耗时:
最大耗时:
最小耗时:
TP50:
TP90:
TP99:
wait
|