开发者社区> 问答> 正文

Spring Data Jpa并发用户请求性能下降

我使用Jmeter对应用程序进行了性能负载测试,发现我的其余get请求之一在并发用户请求负载100上的执行情况确实很差。我需要一些帮助来确定im是否做错了什么。让我对我的应用程序有一些见解。

技术堆栈 我的申请是在春天引导,休息,春天JPA的数据,甲骨文,Kubernetes(2个豆荚),阿光连接池(100,maxLifetime:30000,的idleTimeout:10000 maximumPoolSize)建成。对于简单的查询(查找),我使用spring数据jpa存储库,负载测试可以在类似的延迟下正常运行,但是对于复杂的查询(搜索),我将自定义存储库与带有自动连接的PersistenceContext的querydsl一起使用,负载测试确实很糟糕。

性能结果:

单个请求 一个请求大约需要5秒钟。它是一个复杂的联接查询,可在300万条记录中进行搜索,过滤30万条记录并提取前20条记录。

单次请求延迟 多个请求 如果我的理解是正确的,则对于100个并发请求,服务器将每个请求旋转一个线程,并且所有请求应在5秒钟内返回响应。但是所有线程都在存储层中被阻塞,同步运行,并且对于连续请求的等待时间正在增加。 多个请求 任何帮助将不胜感激,并让我知道是否需要进一步的信息。

示例查询: 我编写了一个视图,该视图可以进行所有联接,这是我正在运行的示例查询,没有任何过滤器。

select * from variants_view order by variants_id asc fetch first 20 rows only.

展开
收起
垚tutu 2019-11-28 22:36:07 965 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载