服务器响应时间1000毫秒,性能 - Spring Boot - 服务器响应时间

我的弹簧启动应用程序有一个奇怪的行为:

前端/客户 - 角6

后端 - spring boot - spring MVC - 嵌入式tomcat - Linux

重新启动后端后,对控制器的第一次调用大约需要5秒,以下相同的请求只需要50ms.这在90%的情况下是可重现的,有时甚至第一次呼叫都很快.

我确定,问题是服务器上没有客户端.在浏览器上,我看到TTFB时间(到第一个字节的时间)增加到5秒.以下请求仅需要10毫秒的TTFB.

使用服务器上的监控工具(应用程序动态)我可以收集这种慢速服务器调用,在调用图上我可以看到:

org.apache.catalina.webresources.JarWarResourceSet:getArchiveEntries:117

需要4916毫秒.我认为这是我的瓶颈.但我不知道如何解决它.

我已经尝试过的:

从hikaricp切换到apache tomcat jdbc连接池

升级后的弹簧靴从2.0.0升级到2.0.5

将java升级到1.8.0_181

Propertie spring.jpa.tomcat.testOnBorrow = true

Propertie spring.jpa.tomcat.validationQuery =选择1

一切都没有影响服务器的延迟.

更新

由于战争文件被多次扫描,时间会丢失.

org.apache.catalina.webresources.CachedResource.validateResource正在检查我们是否有war文件(isPackedWarFile),并且此检查返回false.即使它是一个战争档案.对于这种行为不端,我有一个解决方法.我将tomcat.resource.cache-tt设置为较高的值.

但是现在org.apache.catalina.webresources.Cache.getResource有一个noCache方法.在此方法中,类和jar文件从缓存中排除.这就是为什么再次扫描war文件的原因.

扫描整个war文件大约需要5秒钟.而这个突破是世界休息的一站.并且这种扫描绝对是不必要的,因为war文件没有爆炸,因此其内容无法更改.

更新

如果我将war文件放入tomcat安装,一切都很快.嵌入式tomcat就是问题所在.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值