- 只测试通过车辆查询的一种场景,不考虑二次识别。
- 测试基础数据为近一年的数据(76亿左右)。测试的时段选择(一周、半月、一月、三月、半年、一年及全部数据)
- 测试的卡口选择全部。
- 测试的号牌号码为此前根据过车数量获取的前100000条数据中随机抽取,另外,90%的查询为有号牌查询,10%的查询为无号牌查询。
- 未对车道和方向进行过滤。
- 测试时没有同时进行插入操作。
{
"query": {
"bool": {
"must": [
{
"range": {
"t_pass_data.insertTime": {
"from": "2016-09-13T00:20:44.000Z",
"to": "2016-09-14T00:20:44.000Z"
}
}
}
],
"must_not": [],
"should": []
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"t_pass_data.plateNumNond": "鲁B8070K"
}
}
]
}
},
"from": 0,
"size": 10,
"sort": [
{
"snapTime": {
"order": "desc"
}
}
],
"facets": {}
}
而对于时间的随机,因为对于loadrunner中的日期函数并不了解,所以在度娘中输入“loadrunner 日期”进行查询,幸运的是第一篇文章就出现了有价值的信息(http://www.cnblogs.com/qmfsun/p/4563703.html) ,这里面提到了一个函数lr_save_datetime。到这里还不确定该函数是否可用,因为从文章中看来它取的是一个特定的时间点,而非我想要的一个时间段。 为了得到更多的信息,我查了一下LR的帮助文档,得到的信息如下:
In the following example, lr_save_datetime retrieves tomorrow's date.
lr_save_datetime("Tomorrow is %B %d %Y", DATE_NOW + ONE_DAY, "next");
lr_output_message(lr_eval_string("{next}"));
If today is January 7th, , these lines will return the message: Tomorrow is January .
信息还是不够, 又找度娘问了一下这个函数的用法,找到了这一篇:http://www.cnblogs.com/qmfsun/p/4561705.html 。
这文章里有这样一句话: lr_save_datetime将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。看到这里,我明白问题已经解决了一半了,即如果定义了一个“开始时间”,可以使用这个函数偏移量的设置方法得到一个结束时间。那么怎么得到开始时间呢?并且让它是在一年内随机的一个时间点?
刚开始我想的是两条路:第一条是定义几个随机数字,然后组合成日期时间的格式,这种方法后来因为没找到怎么组合而放弃; 第二条路是利用
lr_save_datetime(const char *format, int offset, const char *name) 这个函数,只是把里面的 offset 用一个随机的日期来替换(上面的两个链接中,这个offset用的都是DATE_NOW),后来也因为没找到替换的对象而失败。。。这个问题纠结了一下午,后来在吃饭的时候忽然灵光一闪想到了解决方法, 同时也对自己半下午的努力苦笑连连——只要在这个函数中,用DATE_NOW 减去一个随机数字不就行了嘛,就这么简单竟然让我苦恼了半下午,深深的对自己无语。。。
int mon,day,hour; //定义时间变量
mon=atoi( lr_eval_string("<mon>"));//0-6
day=atoi( lr_eval_string("<day>"));//1-30
hour=atoi( lr_eval_string("<hour>"));//1-24
//随机取半年内的一个时间作为结束时间
lr_save_datetime("随机结束时间: %Y-%m-%dT%H:%M:%S", DATE_NOW-mon*day*hour*(ONE_HOUR), "endDate");
//计算出一周前时间作为开始时间
lr_save_datetime("随机开始时间: %Y-%m-%dT%H:%M:%S", DATE_NOW-mon*day*hour*(ONE_HOUR)-*ONE_DAY, "beginDate");
最终完整的脚本是:
Action()
{
//随机半个月 的过车数据查询,无车牌 ,全部卡口,不考虑车道、方向
int mon,day,hour; //定义时间变量
mon=atoi( lr_eval_string("<mon>"));//0-6
day=atoi( lr_eval_string("<day>"));//1-30
hour=atoi( lr_eval_string("<hour>"));//1-24
//随机取半年内的一个时间作为结束时间
lr_save_datetime("随机结束时间: %Y-%m-%dT%H:%M:%S", DATE_NOW-mon*day*hour*(ONE_HOUR), "endDate");
//计算出一周前时间作为开始时间
lr_save_datetime("随机开始时间: %Y-%m-%dT%H:%M:%S", DATE_NOW-mon*day*hour*(ONE_HOUR)-*ONE_DAY, "beginDate"); //lr_output_message("%s",lr_eval_string("<beginDate>")); //打印开始时间
//lr_output_message("%s",lr_eval_string("<endDate>")); //打印结束时间 lr_rendezvous("rendezvous");//插入集合点 lr_start_transaction("无车牌查询"); //插入事务 web_reg_find("Text=dataSource", //插入检查点
"Search=Body",
LAST ); web_url("www.abc.com", //主节点为7和9, 数据节点27 "URL=http://IP:PORT/_search?{%22query%22:{%22bool%22:{%22must%22:[{%22range%22:{%22t_pass_data.insertTime%22:{%22from%22:%22<beginDate>.000Z%22,%22to%22:%22<endDate>.000Z%22}}}],%22must_not%22:[],%22should%22:[]}},%22filter%22:{%22bool%22:{%22must%22:[]}},%22from%22:0,%22size%22:10,%22sort%22:[{%22snapTime%22:{%22order%22:%22desc%22}}],%22facets%22:{}}", "TargetFrame=", //"TargetBrowser=Mercury Technologies", "Resource=0", "RecContentType=application/json; charset=UTF-8", "Snapshot=t1.inf", "Mode=HTML", LAST ); lr_end_transaction("无车牌查询", LR_AUTO); //打印出使用的车牌号码
//lr_output_message( "using CAR #%s",lr_eval_string( "<CarNumber>" ));
return ;
}
ES性能测试的更多相关文章
-
将不确定变为确定~老赵写的CodeTimer是代码性能测试的利器
首先,非常感谢赵老大的CodeTimer,它让我们更好的了解到代码执行的性能,从而可以让我们从性能的角度来考虑问题,有些东西可能我们认为是这样的,但经理测试并非如何,这正应了我之前的那名话:“机器最能 ...
-
Spark2.2+ES6.4.2(三十一):Spark下生成测试数据,并在Spark环境下使用BulkProcessor将测试数据入库到ES
Spark下生成2000w测试数据(每条记录150列) 使用spark生成大量数据过程中遇到问题,如果sc.parallelize(fukeData, 64);的记录数特别大比如500w,1000w时 ...
-
分库代价高的情况下,如何优化ES解决亿级数据量检索
数据平台已迭代三个版本,从一开始遇到很多常见的难题,到现在终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的实现参考,但愿能帮助大家少走些弯路,在此篇幅中偏重于ElasticSearch的优化 ...
-
GT性能测试Android版使用说明
1 GT简介 GT(随身调) Android版是腾讯 MIG 专项测试组自行研发的 Android APP 随身调测平台,它是直接运行在手机上的“集成调测环境”(ITE, Integrated Tes ...
-
厉害了,ES 如何做到几十亿数据检索 3 秒返回!
一.前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的 实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop ...
-
es技术规划
一.业务背景 es服务当前没有专门的部门负责维护和开发,交由各端自行负责维护,随着公司业务查询和统计需求非常多,会面临居多方面问题和挑战: 无人(专业RD或部门)负责 无专业的人进行维护,遇到问题几乎 ...
-
上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB
面试题 & 真实经历 面试题:在数据量很大的情况下,怎么实现深度分页? 大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是 ...
-
【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
-
Ignite性能测试以及对redis的对比
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...
随机推荐
-
hive 记事本
hive 0.12 load data overwrite 直接覆盖了数据,不进回收站..... 手动load data 不加overwrite
-
IIS7.5 HTTP错误403.1-Forbidden 您尝试从某个目录运行CGI、ISAPI或其他可执行程序,但该目录不允许运行可执行文件
----------------错误详细---------------------------------------------------------------- --------------- ...
-
centos下的防火墙配置
1,查看防火墙文件: vim /etc/sysconfig/iptables # Generated by iptables-save v1. :: *filter :INPUT ACCEPT [:] ...
-
js 获取元素在页面上的偏移量的最佳方式
使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚 ...
-
c# 鼠标操作
1#region 3using System; 4using System.Runtime.InteropServices; 6#endregion 8namespace Windows.Forms. ...
-
oracle ";记录被另一个用户锁定";
出现的原因是有人对某一条数据进行了修改,oracle会通过这个事务记住这条数据,若修改的人没有进行提交或进行回滚记录,oracle是不允许对这条数据在此进行修改的,在这种情况下你要进行修改数据,则会被 ...
-
eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法
当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...
-
使用spark ml pipeline进行机器学习
一.关于spark ml pipeline与机器学习 一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的 ...
-
【一天一道LeetCode】#342. Power of Four
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
-
Redis安装部署、Jedis的使用
一.NoSQL概述 为什么需要NoSQL High performance -高并发读写 Huge Storage - 海量数据的高效率存储和访问 High Scalability && ...