乐趣区

关于容器:电子商务搜索基准

工具与资源核心
帮忙开发者更加高效的工作,提供围绕开发者全生命周期的工具与资源
https://developer.aliyun.com/…

介绍

电子商务搜寻基准是第一个具备个性化举荐的电子商务搜寻零碎的端到端利用基准。帮忙人们深刻理解电商搜寻工作负载的特点,为行业搜寻零碎提供更好的设计抉择。以及提供电子商务在线搜寻服务的软件系统。因而,这些零碎中的任何一个都能够用来建设这个基准的可行性。
基准的特点:
• 应用真实世界的数据集提供数据生成器并生成各种规模的合成数据。
• 提供一个由淘宝真实世界用户日志驱动的工作负载生成器。
• 提供模仿淘宝搜寻零碎的电子商务搜寻模型 eSearchEngineModel。
• 评估单个组件的整体性能和性能。

电子商务搜寻基准建设在 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 形成电子商务搜寻模型 eSearchEngineModel,aliesearch-benchmark-cli 是 Data Generator,aliesearch-jmeter-image 将 Workload Generator 生成的工作负载驱动到电子商务搜寻模型 eSearchEngineModel。

    筹备

    依赖

    须要以下构建工具:
    • 毕业 4.x
    • 里手 3.x
    • 码头工人 17.09+
    • jdk8
    留神:确保您能够在不 sudo 运行的状况下应用 docker
    sudo usermod -aG docker $USER

    建造

    build.sh 在 eSearchEngineModel 目录中运行以构建和公布图像等。
    • 编译和构建 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.sh 在 eSearchEngineModel 基于 arm64v8 的平台上运行时,in 目录反对为基于 arm64v8 的平台构建映像。并且所有的试验都能够依照下面形容的步骤在基于 arm64v8 的平台上运行。

本文转自:https://developer.aliyun.com/…

退出移动版