背景:
最近需要开一个10分钟一期的彩种,需要测试下往第三方出票的速度、获取中奖名单和算奖比对执行时间,10分钟一期对性能要求比较高
出票优化:
1、一次查询多票,开多线程并发投注。
2、一次投注传输多票
3、支付后启用消息驱动投注,为了保险会有一个定时任务扫描表往投注队列中补充遗漏的记录
获取中奖名单:
按照习惯,开始我还以为是FOR循环中多次数据库交互是主要瓶颈,改造成批量后,由于按主键取,速度很快,并没有什么改进,分析日志,从第三方接口取名单会比较慢,交互185次,取了9205条记录,费时1分钟多钟,需要改成并发去取名单
算奖:
还是开多线程进行算奖比对。
主要收获:
如果按主键取记录,并没有我原来想象的那么慢,实际测试了一下
单次取100条时间(ms) | 循环100次(ms) | 取单条(ms) |
143, | 565, | 6 |
121, | 571, | 6 |
115, | 778, | 6 |
100次相差5倍,但是还是在毫秒级,优化并不会效果明显。
多线程算奖代码:
private void concurrentCalPrize(final LotteryIssue issue,final Collection<Long> orderIds){
if(orderIds == null || orderIds.isEmpty()){
return ;
}
final CountDownLatch latch = new CountDownLatch(orderIds.size());
ExecutorService service = new ThreadPoolExecutor(5,5,100,TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>(Integer.MAX_VALUE));
for (final long jdorderId : orderIds) {
service.execute(new Runnable(){public void run(){
try{
calOrderPrize(issue,jdorderId);
}catch(Exception e){
log.error("",e);
}finally{
latch.countDown();
}
}});
}
try {
latch.await();
} catch (InterruptedException e) {
log.error("", e);
}
try {
service.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
log.error("", e);
}
service.shutdown();
}
分享到:
相关推荐
doc格式的文件 对一次性能调优过程的讲解,描述 能得到不少启发
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
在摸索过一段时间Erlang文档后,笔者开始走向了Erlang网络连接的性能调优之旅。本文详细记录了笔者走向Erlang网络编程性能调优之旅的每个脚印。
SQL性能调优方法特提供下载,记录自己在学习过程中有关性能调优的方法
测量并记录当前性能 确定当前Oracle性能瓶颈 跟踪事件 本文档是本人多年OARCLE调优经验的集合,非常具有实用价值
IBM DB2 V9 性能调优(培训文档+实验记录)
一般我们使用这个脚本来监控当前数据库正在发生的活动,这有助于我们对数据库性能进行调优。 使用方法:sh getevmon.sh dbname outputfile 60 #dbname:要监控的数据库实例名 #outputfile:输出文件名,自定义 #60:...
1.11 删除重复记录 8 1.12 用TRUNCATE替代DELETE 9 1.13 尽量多使用COMMIT 9 1.14 计算记录条数 9 1.15 用WHERE子句替换HAVING子句 9 1.16 减少对表的查询 10 1.17 通过内部函数提高SQL效率 10 1.18 使用表的别名...
本文主要通过一下几个方面介绍:使用SQLDMV查找慢速查询、通过APM解决方案查询报告、SQLServer扩展事件、SQLAzure查询性能洞察等相关内容。本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能是...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...
1、MySQL的主要适用场景 web网站系统,日志记录系统,数据仓库系统,嵌入式系统 2、物理文件 2.1、 日志文件含 错误日志,二进制日志,更新日志(5.0后不支持),查询日志,慢查询日志,redo日志 2.2、数据文件含 ....
23进阶 10:API 性能测试和调优(2)
再次对play()进行测试,耗时855毫秒/万次,性能终于上来了,输出的JIT编译记录也增加了一行: 16 HugeM
2、静态下Apache、Lighttpd和Nginx中Etag和Expires配置3、非实时交互动态页面中...服务器端响应同时记录相关属性标记(Http Reponse Header),服务器端的返回状态会是200,格式类似如下:HTTP/1.1 200 OKDate: Tue, 0
本项目是一个基于Java和Python开发的Apache Spark自动调优工具,包含74个文件,主要文件类型包括Java源代码、Python脚本、数据文件、XML...用户只需提供相关数据和参数历史记录,系统便能自动进行调优,提高系统性能。
6.6.1 性能调优原理 6.6.2 前端性能分析 6.6.3 后端性能分析 6.7 性能测试报告 6.7.1 平台对比性能测试报告 6.7.2 Phpwind85性能分析报告 6.7.3 DiscuzX2 VS Phpwind85性能对比报告 6.7.4 Phpwind85验收指标性能测试...
系统调优(硬件调优、数据库调优) 出一份报告给客户看 1.4 性能指标 (举例) 平均响应时间(秒) 成功率(%) 系统最大处理能力(请求/秒) 系统支持的最大并发用户数 系统预期响应时间(秒) 1.5 性能测试过程 ...
6.6.1 性能调优原理 6.6.2 前端性能分析 6.6.3 后端性能分析 6.7 性能测试报告 6.7.1 平台对比性能测试报告 6.7.2 Phpwind85性能分析报告 6.7.3 DiscuzX2 VS Phpwind85性能对比报告 6.7.4 Phpwind85验收指标性能测试...