Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据Jpa并发用户请求性能命中_Java_Spring Boot_Oracle11g_Spring Data Jpa_Querydsl - Fatal编程技术网

Java Spring数据Jpa并发用户请求性能命中

Java Spring数据Jpa并发用户请求性能命中,java,spring-boot,oracle11g,spring-data-jpa,querydsl,Java,Spring Boot,Oracle11g,Spring Data Jpa,Querydsl,我用Jmeter对我的应用程序进行了性能负载测试,发现我的一个rest get请求在并发用户请求负载为100时执行得非常糟糕。我需要一些帮助来找出我是否做错了什么。让我对我的申请提出一些见解 技术堆栈 我的应用程序是基于Spring Boot、Rest、Spring数据JPA、Oracle、Kubernetes(2个pod)、Hikari连接池(maximumPoolSize:100、maxLifetime:30000、idleTimeout:10000)构建的。对于简单查询(查找)i 使用sp

我用Jmeter对我的应用程序进行了性能负载测试,发现我的一个rest get请求在并发用户请求负载为100时执行得非常糟糕。我需要一些帮助来找出我是否做错了什么。让我对我的申请提出一些见解

技术堆栈 我的应用程序是基于Spring Boot、Rest、Spring数据JPA、Oracle、Kubernetes(2个pod)、Hikari连接池(maximumPoolSize:100、maxLifetime:30000、idleTimeout:10000)构建的。对于简单查询(查找)i 使用spring data jpa repository,负载测试运行良好,延迟类似,但对于复杂查询(搜索),我使用带有querydsl的自定义存储库和自动连接的PersistenceContext,负载测试非常糟糕

绩效结果:

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

多个请求 如果我的理解是正确的,在100个并发请求上,服务器会为每个请求启动一个线程,所有请求都会在5秒内返回响应。但是,所有线程都会在存储库层被阻塞,同步运行,并且对于连续的请求,延迟会增加。 任何帮助都将不胜感激,如果需要更多信息,请告诉我

示例查询: 我已经写了一个视图,它完成了所有的连接,这是我在没有任何过滤器的情况下运行的示例查询

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

发布您的表结构(最好发布完整生成的sql和所有内容),以便人们能够正确地查看此行为—您的池看起来相当大。你应该阅读HikariCP关于池大小的文章。Pawel,它运行一个视图,我已经添加了我使用的查询。卡亚曼,是的,我会调查的。之前我有25个,但我增加了池大小,因为一些请求超时,因为其他请求尚未释放连接。但是,是的,我会检查,看看这是否是一个问题。如果你安装了grafana,那么你可以检查Pod的内存限制和它在运行时的限制,还可以检查cpu