我使用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.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。