spring-boot每天第一次請求數據特別慢,之后速度正常,請大神幫助!


問題現象:調取一個接口每天第一或前幾次返回結果超時(超過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文件啊

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com