当前位置: 首页 > 后端技术 > Java

E-CommerceSearchBenchmark

时间:2023-04-02 10:31:28 Java

工具和资源中心通过提供围绕开发者全生命周期的工具和资源,帮助开发者更高效地工作https://developer.aliyun.com/...首先介绍E-CommerceSearchBenchmark具有个性化推荐的电子商务搜索系统的端到端应用基准。帮助人们深入了解电商搜索工作负载的特点,为行业搜索系统提供更好的设计选择。以及为电子商务提供在线搜索服务的软件系统。因此,这些系统中的任何一个都可以用来建立这个基准的可行性。基准特性:?提供使用真实世界数据集的数据生成器,并生成各种规模的合成数据。?提供由淘宝真实用户日志驱动的工作负载生成器。?提供模拟淘宝搜索系统的电子商务搜索模型eSearchEngineModel。?评估整体性能和单个组件的性能。建立在docker图像之上的电子商务搜索基准。如上图,benchmark由7个docker镜像组成:aliesearch-search-planneraliesearch-query-planneraliesearch-tf-servingaliesearch-ha3aliesearch-ranking-servicealiesearch-jmeter-imagealiesearch-benchmark-cli其中,图片1~5构成电子业务搜索模型eSearchEngineModel,alisearch-benchmark-cli是DataGenerator,alisearch-jmeter-image将WorkloadGenerator产生的工作负载驱动到电商搜索模型eSearchEngineModel。准备依赖项需要以下构建工具:?Graduation4.x?Maven3.x?Docker17.09+?jdk8注意:确保您可以在没有sudo的情况下使用eSearchEngineModel目录中的dockersudousermod-aGdocker$USERbuild.sh进行构建并发布图像等。?编译和构建docker图像。/build.shbuild将docker图像发布到指定的远程docker重定位。如果你只是在本地运行,你可以跳过这一步。./build.shpush${repo_name}RunbenchmarkNotes:必须需要正确的javamaxmemorysize值,否则dockerimage将无法工作。您可以通过运行sudosysctl-wvm.max_map_count=262144使其成为临时的,或者您可以通过直接编辑主机上的/etc/sysctl.conf文件使其成为永久的,添加如下一行:vm.max_map_count=262144然后运行sysctl-p以独立运行示例1.appctl.sh将此目录复制到您的工作目录;2.拉取所有镜像:(如果只在本地运行,请跳过此步)sudo./appctl.shpull启动所有镜像并自动导入默认数据运行:sudo./appctl.shstart检查通过在任何docker中运行以下命令,所有图像都准备好工作:sudodockerexec-italiesearch-jmeter-imagebashcurl-H'Content-Type:application/json;charset=UTF-8'-d'{"uid":"798","page":0,"query":"68"}'${search_planner_ip}:8080/search通过jmeter运行示例实验:?通过运行以下命令登录“jmeter-image”:sudodockerexec-italiesearch-jmeter-imagebash?通过运行以下命令启动压力测试过程:cdapache-jmeter-5.1.1./bin/jmeter-n-tsearch_stress.jmx-lresult-e-oreport示例runningonk8s还提供了依赖k8s的分布式部署,更符合线上环境。benchmark测试可以在k8s集群上运行如下:1.将k8s.yml复制到k8smaster节点的工作目录下。2.k8s.yml用你自己的repo替换dockerimagesrepo配置3.通过运行自动拉取所有图像并导入默认数据:sudokubectlcreate-fk8s.yml1.检查Pod状态以确保所有Pod正常启动:sudokubectl获取pod1。通过jmeter运行示例实验:?登录到jmeterpodsudokubectlexec-italiesearch-jmeter-imagebash?运行启动压力测试进程cdapache-jmeter-5.1.1./bin/jmeter-n-tsearch_stress.jmx-lresult-e-oreport以自定义模式运行该基准测试带有电子商务数据生成器和由生产数据和真实用户查询驱动的工作负载生成器。使用自定义数据大小和工作负载模式运行实验有4个步骤。1、安装benchmark,按照RunningExampleinstandalone2中的步骤1~3启动benchmark的所有图片。数据生成benchmark-cli登录镜像运行:sudodockerexec-tialiesearch-benchmark-clibash生成产品和用户数据,加载到对应的搜索组件中运行:vimentrypoint.shshentrypoint.sh${scale_factor}其中${scale_factor}设置确定数据集大小的比例因子(1比例因子等于10K项目和6K用户,10Scale因子等于100K项目和60K用户,依此类推)3.工作负载生成切换到目录workload_generator并指定当天的开始时间(-t)、工作负载的持续时间(-d)、生成因子的工作负载(-f)和用户规模(-u)生成工作负载,方法是运行:python3workload_generator.py-t21-d1800-f0.1-u100000workload_u100000_h21_d1800_f0.1.csv目录会生成一个文件workload_generator,驱动到被测试的System模型(如eSearchEngineModel)。4.通过jmeter运行实验首先,将生成的工作负载文件query_workload.csv复制到jmeterdocker中的jmeter路径(apache-jmeter-5.1.1/bin/jmeter)。然后,运行以下命令登录“jmeter-image”:sudodockerexec-tialiesearch-jmeter-imagebash并切换到jmeterbin目录,运行以下命令启动压力测试过程:cdapache-jmeter-5.1.1./bin/jmeter-n-tsearch_stress.jmx-lresults-e-oreportBatchRunBenchmark1。将目录更改为./run-scripts;2。拉取或构建所有镜像3。使用默认数据集图像启动所有?要独立运行Benchmark,运行:./deploy_standalone.shstart?要在集群中运行Benchmark,运行:./deploy_cluster.shstartwithspecifiedipaddressforeachdockerinthemulti_iplist_env.shfilecheck全部通过运行图像是否准备好工作: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的平台上运行Benchmarkbuild.sh在基于arm64v8的平台上运行eSearchEngineModel时,in目录支持为基于arm64v8的平台构建图像。所有实验都可以按照上述步骤在基于arm64v8的平台上运行。本文转自:https://developer.aliyun.com/...