spring-boot每天第一次请求数据特别慢,之后速度正常,请大神帮助!

时间:2021-09-18 17:00:33
问题现象:调取一个接口每天第一或前几次返回结果超时(超过30s),之后会正常返回结果(1s左右)
该接口内部通过rpc方式调取接口获得appkey ,通过http方式调取接口获取MD5值。

第一次请求
2017-06-17 03:29:09,170 INFO [com.***.***.developer.service.DeveloperService] - <start param>
2017-06-17 03:29:17,466 INFO [com.***.***.developer.service.DeveloperService] - <start bas>
2017-06-17 03:30:03,499 INFO [access] - <consume 82169ms for request:[DeveloperController-createMd5keyAppkeyAppsecret-{{"developerId":55,"appName":"juhe","packageName":"com.11111111111111111111111111","callbackUrl":null,"partnerCode":"1","partnerName":"1aaaaaaa","appType":1,"appDesc":"test1","deviceType":1}}]>
第二次请求
2017-06-17 03:32:02,909 INFO [access] - <consume 8023ms for request:[DeveloperController-createMd5keyAppkeyAppsecret-{{"developerId":55,"appName":"juhue","packageName":"com.11111111111111111111111111","callbackUrl":null,"partnerCode":"1","partnerName":"1aaaaaaa","appType":1,"appDesc":"test1","deviceType":1}}]>
第三次请求
2017-06-17 03:32:39,665 INFO [access] - <consume 340ms for request:[DeveloperController-createMd5keyAppkeyAppsecret-{{"developerId":55,"appName":"juhe","packageName":"com.11111111111111111111111111","callbackUrl":null,"partnerCode":"1","partnerName":"1aaaaaaa","appType":1,"appDesc":"test1","deviceType":1}}]>

这是前几次请求create-md5key-appkey-appsecret接口的响应时间,第一次耗时82s 第二次耗时8s,第三次耗时0.3s。且如第一次日志:
      2017-06-17 03:29:09,170 INFO [com.***.***.developer.service.DeveloperService] - <start param>
      2017-06-17 03:29:17,466 INFO [com.***.***.developer.service.DeveloperService] - <start bas>
      耗时8s,但是代码只执行以下拼参数操作:
      logger.info("start param")
      AppQueryParam param  = new AppQueryParam()
      param.appDesc = createKeysReq.appDesc
      param.appname = createKeysReq.appName
      param.apppackagename = createKeysReq.packageName
      param.developerid = createKeysReq.developerId
      logger.info("start bas")
没有任何外部连接。都会耗时8s之久!

后尝试连接该网元其他接口发现,如get-developerlist-with-distributor接口:
2017-06-23 06:43:32,473 INFO [access] - <consume 20149ms for request:[DeveloperController-getAllDeveloperWithDistributor-]>
第一请求也会达到20s之久。

定位:
首先服务器负载不高,且其他服务器可复现,不是环境原因。
抓包显示其他网元返回数据速度正常,不是其他网元原因。
该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。
连接的都是oracle数据库,不是mysql八小时原因。
且获取正常响应之后,尝试重启,重装rpm包都不会使问题重现。

怀疑架构原因,各位遇到过吗?求教各位大神!

7 个解决方案

#1



没有解决方案之前,可以采用定时任务,没分钟调用一次,

#2


引用 1 楼 tianfang 的回复:
没有解决方案之前,可以采用定时任务,没分钟调用一次,



之前遇到过吗?

#3


该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。

多重调用,可以试试测试一下其他接口时间

#4


系统有没有涉及   zookeeper ,懒加载,缓存 机制 之类的

#5


好高端,貌似看懂一点点

#6


引用 3 楼 tianfang 的回复:
该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。

多重调用,可以试试测试一下其他接口时间


groovy 与 java相互调用会产生吗?有什么注意事项吗?今天把groovy部分用java重新实现,问题没有复现,但还需要观察。

#7


引用 4 楼 JJYYyibanhua 的回复:
系统有没有涉及   zookeeper ,懒加载,缓存 机制 之类的


spring-boot工程,框架使用上应该没什么问题,groovy 与 java相互调用会产生这种现象吗?按理讲最后编译后都是class文件啊

#1



没有解决方案之前,可以采用定时任务,没分钟调用一次,

#2


引用 1 楼 tianfang 的回复:
没有解决方案之前,可以采用定时任务,没分钟调用一次,



之前遇到过吗?

#3


该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。

多重调用,可以试试测试一下其他接口时间

#4


系统有没有涉及   zookeeper ,懒加载,缓存 机制 之类的

#5


好高端,貌似看懂一点点

#6


引用 3 楼 tianfang 的回复:
该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。

多重调用,可以试试测试一下其他接口时间


groovy 与 java相互调用会产生吗?有什么注意事项吗?今天把groovy部分用java重新实现,问题没有复现,但还需要观察。

#7


引用 4 楼 JJYYyibanhua 的回复:
系统有没有涉及   zookeeper ,懒加载,缓存 机制 之类的


spring-boot工程,框架使用上应该没什么问题,groovy 与 java相互调用会产生这种现象吗?按理讲最后编译后都是class文件啊