该接口内部通过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
之前遇到过吗?
#3
该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。
多重调用,可以试试测试一下其他接口时间
多重调用,可以试试测试一下其他接口时间
#4
系统有没有涉及 zookeeper ,懒加载,缓存 机制 之类的
#5
好高端,貌似看懂一点点
#6
groovy 与 java相互调用会产生吗?有什么注意事项吗?今天把groovy部分用java重新实现,问题没有复现,但还需要观察。
#7
spring-boot工程,框架使用上应该没什么问题,groovy 与 java相互调用会产生这种现象吗?按理讲最后编译后都是class文件啊
#1
没有解决方案之前,可以采用定时任务,没分钟调用一次,
#2
之前遇到过吗?
#3
该网元其他接口也会慢只是没create-md5key-appkey-appsecret接口这么严重(原因该接口业务相对复杂,又调取其他两个网元),不是特殊接口原因。
多重调用,可以试试测试一下其他接口时间
多重调用,可以试试测试一下其他接口时间
#4
系统有没有涉及 zookeeper ,懒加载,缓存 机制 之类的
#5
好高端,貌似看懂一点点
#6
groovy 与 java相互调用会产生吗?有什么注意事项吗?今天把groovy部分用java重新实现,问题没有复现,但还需要观察。
#7
spring-boot工程,框架使用上应该没什么问题,groovy 与 java相互调用会产生这种现象吗?按理讲最后编译后都是class文件啊