电子商务搜索基准

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 电子商务搜索基准是第一个具有个性化推荐的电子商务搜索系统的端到端应用基准。这项工作与詹建峰教授合作(http://www.benchcouncil.org/zjf.html)'的团队,他也是国际开放基准委员会(BenchCouncil,http://www.benchcouncil.org/)的主席。

介绍

电子商务搜索基准是第一个具有个性化推荐的电子商务搜索系统的端到端应用基准。帮助人们深入了解电商搜索工作负载的特点,为行业搜索系统提供更好的设计选择。以及提供电子商务在线搜索服务的软件系统。因此,这些系统中的任何一个都可以用来建立这个基准的可行性。

基准的特点:

  • 使用真实世界的数据集提供数据生成器并生成各种规模的合成数据。
  • 提供一个由淘宝真实世界用户日志驱动的工作负载生成器
  • 提供模拟淘宝搜索系统的电子商务搜索模型eSearchEngineModel
  • 评估单个组件的整体性能和性能。


image.png

电子商务搜索基准建立在 docker 镜像之上。如上图所示,benchmark由7个docker镜像组成:

  1. aliesearch-search-planner
  2. aliesearch-查询-规划器
  3. aliesearch-tf-serving
  4. aliesearch-ha3
  5. aliesearch-ranking-service
  6. aliesearch-jmeter-image
  7. aliesearch-基准-cli

其中,图片 1~5 构成电子商务搜索模型eSearchEngineModelaliesearch-benchmark-cliData Generatoraliesearch-jmeter-imageWorkload Generator生成的工作负载驱动到电子商务搜索模型eSearchEngineModel

准备

依赖

需要以下构建工具:

  • 毕业 4.x
  • 行家 3.x
  • 码头工人 17.09+
  • jdk8

注意:确保您可以在不sudo运行的情况下使用 docker

sudo usermod -aG docker $USER

建造

build.sheSearchEngineModel目录中运行以构建和发布图像等。

  • 编译和构建 docker 镜像
./build.sh build

将 docker 镜像发布到指定的远程 docker 重新定位。如果只在本地运行,可以跳过这一步。

./build.sh push ${repo_name}

运行基准

笔记:

必须需要正确的 java 最大内存大小值,否则 docker 图像将无法工作。您可以通过运行将其设置为临时

sudo sysctl -w vm.max_map_count=262144

或者您可以通过直接/etc/sysctl.conf在主机上编辑文件来将其设置为永久,添加如下一行:

vm.max_map_count = 262144

然后运行

sysctl -p

独立运行示例

  1. appctl.sh将此目录复制到您的工作目录;
  2. 通过运行拉取所有镜像:(如果您只在本地运行,请跳过此步骤。)
 sudo ./appctl.sh pull

通过运行以下命令启动所有图像并自动导入默认数据:

 sudo ./appctl.sh start

通过在任何 docker 中运行以下命令来检查所有图像是否已准备好工作:

 sudo docker exec -it aliesearch-jmeter-image bash
 curl -H 'Content-Type:application/json;charset=UTF-8' -d'
             {"uid":"798", "page":0, "query":"68"}' ${search_planner_ip}:8080/search

通过 jmeter 运行示例实验:

  • 运行以下命令登录到“jmeter-image”:
sudo docker exec -it aliesearch-jmeter-image bash
  • 运行通过运行来启动压力测试过程:
cd apache-jmeter-5.1.1
./bin/jmeter -n -t search_stress.jmx -l result -e -o report

在 k8s 上运行示例

还提供了依赖k8s的分布式部署,更符合线上环境。基准测试可以在 k8s 集群上运行,如下所示:

  1. 复制k8s.yml到 k8s 主节点上的工作目录。
  2. k8s.yml用你自己的 repo替换 docker images repo 配置
  3. 通过运行以下命令拉取所有图像并自动导入默认数据:
sudo kubectl create -f k8s.yml
  1. 通过运行以下命令检查 Pod 状态以确保所有 Pod 正常启动:
sudo kubectl get pod
  1. 通过 jmeter 运行示例实验:
  • 登录到 jmeter pod
sudo kubectl exec -it aliesearch-jmeter-image bash
  • 运行开始压力测试过程
cd apache-jmeter-5.1.1
./bin/jmeter -n -t search_stress.jmx -l result -e -o report

以自定义模式运行

该基准测试附带了一个电子商务数据生成器和工作负载生成器,它们由生产数据和实际用户查询驱动。使用自定义数据规模和工作负载模式运行实验有 4 个步骤。

1. 安装基准

按照中的1~3步启动benchmark的所有图片 Running Example in standalone

2. 数据生成

benchmark-cli通过运行登录到图像:

须藤docker exec -ti aliesearch-benchmark-cli bash

生成商品和用户数据,通过运行将它们加载到相应的搜索组件中:

vim入口点.sh

sh entrypoint.sh ${scale_factor}

其中,${scale_factor}设置决定数据集大小的比例因子(1 比例因子等于 10K 商品和 6K 用户,10 比例因子等于 100K 商品和 60K 用户,以此类推)

3. 工作负载生成

切换到目录workload_generator,并为一天的指定开始时间 (-t)、工作负载的持续时间 (-d)、要生成的工作负载因子 (-f) 和用户规模 (-u) 生成工作负载,通过运行:

python3workload_generator.py -t 21 -d 1800 -f 0.1 -u 100000

workload_u100000_h21_d1800_f0.1.csv目录下会生成一个文件workload_generator,驱动到被测系统模型中(例如eSearchEngineModel)。

4.通过jmeter运行实验

首先,将生成的工作负载文件复制query_workload.csv 到jmeter docker中的jmeter路径( apache-jmeter-5.1.1/bin/jmeter)。然后,通过运行以下命令登录到“jmeter-image”:

须藤docker exec -ti aliesearch-jmeter-image bash

并切换到 jmeter bin 目录,通过运行以下命令启动压力测试过程:

cd apache-jmeter-5.1.1

./bin/jmeter -n -t search_stress.jmx -l 结果 -e -o 报告

批量运行Benchmark

  1. 将目录更改为 ./run-scripts;
  2. 拉取或构建所有镜像
  3. 使用默认数据集启动所有图像
  • 独立运行 Benchmark,运行:
./deploy_standalone.sh start
  • 要在集群中运行 Benchmark,请运行:

./deploy_cluster.sh 启动

 with specified ip address for each docker in the `multi_iplist_env.sh` file

通过运行以下命令检查所有图像是否已准备好工作:

 curl -H 'Content-Type:application/json;charset=UTF-8' -d'
             {"uid":"798", "page":0, "query":"68"}' ${search_planner_ip}:8080/search

通过在指定的情况下运行以下脚本来批量运行实验:

./run_batch_cluster.sh

分析收集到的结果./run-scripts/jmeter_result

  • ./run-scripts/jmeter_result通过运行以下命令更改目录并预处理结果日志:
./result_stat.sh
  • 结果包括 QPS、响应时间、响应时间的延迟细分、系统指标等。

在基于 arm64v8 的平台上运行 Benchmark

build.sheSearchEngineModel基于 arm64v8 的平台上运行时,in目录支持为基于 arm64v8 的平台构建映像。并且所有的实验都可以按照上面描述的步骤在基于 arm64v8 的平台上运行。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
数据采集 搜索推荐 安全
如何查询谷歌SEO关键词的搜索量?
答案是:可通过semrush或Google Search Console工具获取关键词来发外链。 选择正确的工具 Google关键词规划器 最直接和权威的工具便是Google自家的关键词规划器。 使用这个工具,你可以获取到准确和详尽的关键词搜索量数据。
407 0
如何查询谷歌SEO关键词的搜索量?
|
SEO
谷歌搜索留痕的技术公式【2023年新版】
一般情况下我们是不建议个人搭建的,因为成本很高,而且技术成本和维护成本也对谷歌的SEO机制要有一定的熟悉。
368 0
谷歌搜索留痕的技术公式【2023年新版】
【算法提高——第二讲】搜索(2)
【算法提高——第二讲】搜索(2)
【算法提高——第二讲】搜索(2)
【算法提高——第二讲】搜索(3)
【算法提高——第二讲】搜索(3)
【算法提高——第二讲】搜索(3)
【算法提高——第二讲】搜索(1)
【算法提高——第二讲】搜索(1)
【算法提高——第二讲】搜索(1)
|
前端开发 JavaScript 搜索推荐
如何正确的使用百度精准搜索
如何正确的使用百度精准搜索
525 0
|
自然语言处理 算法 知识图谱
电商搜索如何“想用户所想,提高搜索结果质量”?
本文针对电商搜索中如何“想用户所想,提高搜索结果质量”的问题进行剖析,并通过阿里云开放搜索电商行业解决方案和大家聊一聊如何优化解决~
3880 0
电商搜索如何“想用户所想,提高搜索结果质量”?
|
数据采集 机器学习/深度学习 编解码
神马搜索如何提升搜索的时效性?
什么是搜索的时效性?有哪些特征?如何优化?本文分享神马搜索在搜索排序时效性问题上的实践和探索,从基础特征优化开始,通过标注数据进行排序和召回模型优化,以及时效性排序的召回体系和收录体系。较长,同学们可收藏后再看。
2987 0
神马搜索如何提升搜索的时效性?
|
搜索推荐 UED
影响搜索排名的用户行为
可以影响排名的用户行为如下。 1.网站流量和Alexa排名 这两个因素是最直接、误差最大的因素,其中Alexa排名因为其样本分布不均匀、容易作弊等特点,与网站真实流量往往有很大的误差,不过总体流量也是在一定程度上说明网站的受欢迎程度,因此这一类用户行为的总和也是在影响着排名的。
162 0
|
自然语言处理 数据可视化 前端开发
电商搜索“无结果率高,体验差”怎么办?
本文针对电商搜索中遇到的“搜索无结果,排序机制不满足业务需求”的问题进行刨析,并通过阿里云开放搜索的最佳实践跟大家聊一聊应该如何应对解决~
3018 0
电商搜索“无结果率高,体验差”怎么办?