當您對解析結果或HTTPDNS服務品質產生如下疑問,希望排查問題時,請參考此“會話追蹤方案”。
您認為解析出的IP不符合預期,以至於影響了業務網域名稱的服務品質。
對於有疑問的解析IP,需要先確定是否由HTTPDNS解析的結果:需要提供從HTTPDNS介面取出IP的日誌及具體的HTTPDNS接入代碼。
由於技術限制,我們只提供三天內的解析問題排查。
由於此方案需要配合SDK的getSessionId方法,您至少需要升級至 Android ≥ 1.2.3, iOS ≥ 1.6.20才能應用此方案。
背景介紹
對於一個配置了分線路解析的網域名稱,根據客戶入網IP的不同,返回的IP是根據各線路的配置而不同。為了獲得更好的服務品質,服務節點調度系統(GSLB)可能會頻繁地變更上述的線路調度配置,例如CDN系統,可能每幾個小時就會調整一次調度配置。如果用戶端擷取到了錯誤的調度結果(即解析結果),可能會導致服務品質受損,也就是慢或逾時,還有可能導致服務不可用。
為了定位上述問題,一般需要您提供來源IP、解析時間、解析的網域名稱、解析結果IP列表來定位異常現場,以便觀察是否有對應的調度結果記錄。但這種定位異常現場的方案存在以下問題:
用戶端難以提供準確的入網IP。
即使提供了準確的入網IP,由於IP一般是共用的,不一定能定位到該次解析現場。
對於同一個網路環境,電訊廠商可能會針對不同的目的IP,提供不同的入網IP。
在App的一次生命週期中,入網IP可能發生變化。
難以解釋以上入網IP發生的變化原因。
引入sessionId(會話唯一ID)
sessionId參數在App啟動時產生,在整個App生命週期中不會發生變化。在同一個App生命週期中的HTTPDNS解析請求均會攜帶同一個sessionId,伺服器則會記錄這個參數,並產生索引。與App異常日誌上報中以單個裝置ID為索引條件類似,本方案以App的一次生命週期作為做索引條件。與問題常規排查方案中“來源IP-解析結果”組合的追蹤方式相比,使用sessionId對App生命週期進行追蹤,是一種更精準,更適用於App情境的問題排查方式。
通過引入sessionId,我們不再需要您提供用戶端入網IP,改為根據sessionId擷取準確的IP資訊。同時可以追蹤在App的一次生命週期中所有的HTTPDNS解析請求,可以觀測到入網IP可能發生的變化,還可以根據net參數的變化解讀客戶入網IP變化的原因。
例如:一個客戶通過4G入網,接入使用的SIM卡可能是廣東的電訊廠商發行的,那麼接入IP可能是廣東地區的。當從HTTPDNS擷取IP後,客戶串連了其物理所在地的有線網路或wifi,可能導致接入IP立即變為該地區的IP,導致內容服務品質受到影響。這種情境在傳統LocalDNS環境下和HTTPDNS下都會出現。
使用“會話追蹤方案”
由於App更新升級過程是漸進式的,無法在短時間內部署最新的版本,我們建議您在接入HTTPDNS時就參考本方案,記錄解析結果和對應的sessionId,以便後續有問題時,方便準確提供追查線索。
SDK接入:我們會在App啟動時產生sessionId,並提供了getSessionId方法擷取產生的結果。您需要更新SDK版本來使用此功能(Android ≥ 1.2.3, iOS ≥ 1.6.20),但我們建議您升級至最新版本,以便解決一些已知的其他SDK問題。
HTTP API方式接入(即非SDK接入):您可以仿照SDK的邏輯產生相應參數。
端日誌上報調度服務品質問題時,需要額外記錄sessionId參數。
另外,您也可以將sessionId攜帶至其他系統中。例如當使用HTTPDNS解析結果,請求該網域名稱的服務時,可以在URL中額外攜帶sessionId參數,這樣可以更加完整地觀察客戶使用情境。
在本方案中,每次SDK對HTTPDNS伺服器的請求中,我們添加了如下三個參數(伺服器會記錄這些資訊):
sid=<sessionId:[a-zA-Z0-9]{12}>,在SDK啟動時產生,用於標記一次獨立的App生命週期。
net=<4g|3g|2g|wifi|unknown>,用於標記請求發起時刻os層提供的網路情況;提供sessionId後,我們可以將當時記錄的net資訊反饋給您。
bssid=<wifi_bssid>,用於標記不同的wifi網路;提供sessionId後,我們可以將當時記錄的bssid資訊反饋給您。
樣本URL: http://47.74.222.190/902379/d?host=www.aliyun.com&sid=wInhNA3iM0PK&net=wifi&bssid=54e061553e79
排查情境:解析出的結果不符合預期
當出現解析出的結果不符合預期,您認為可能和HTTPDNS有關,需要排查時:
請您提交HTTPDNS工單,並提供以下資訊:
解析時的sessionId、解析時間、解析的網域名稱、解析結果、預期解析結果。
是否造成了實際商務服務品質下降(例如調度到了不正確地區的服務節點)?
是否造成了業務停用問題?
如果發現這類問題,建議您儘早針對此類情況,考慮重新擷取網域名稱解析結果(HTTPDNS或LocalDNS),並進行業務重試。
我們會根據sessionId提供以下調查結果:
該解析結果是否由HTTPDNS服務提供?
根據端上策略不同,解析結果可能有三種不同的來源:HTTPDNS、LocalDNS、持久化緩衝。
該次HTTPDNS解析對應的網路環境及入網IP。
客戶在該次App生命週期內是否存在IP跨地區切換的情況。