問題現象:調取一個接口每天第一或前幾次返回結果超時(超過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 个解决方案
沒有解決方案之前,可以采用定時任務,沒分鍾調用一次,
該網元其他接口也會慢只是沒create-md5key-appkey-appsecret接口這么嚴重(原因該接口業務相對復雜,又調取其他兩個網元),不是特殊接口原因。
多重調用,可以試試測試一下其他接口時間
系統有沒有涉及 zookeeper ,懶加載,緩存 機制 之類的