本文档介绍了在集成 Android SDK 后,如何验证 HTTPDNS 解析是否生效。
您可以通过以下任意一个方法验证 HTTPDNS 解析是否生效。
在调用 getHttpDnsResult
方法获取 DnsResult 对象后,您可以调用 log 类 的方法把 DnsResult
打印到日志。
例如,您调用 Log.d()
把 DnsResult 对象的文本值输出到日志:
private static final String TAG = "MyActivity"; DnsResult dnsResult = HttpDns.getService().getHttpDnsResultForHostSyncBlock(hostname); StringBuilder dnsResultString = new StringBuilder("host : " + dnsResult.host + "\n" + "getHttpDnsResultForHostSyncBlock cost : " + cost + "\n" + "dns source : " + dnsResult.source + "\n" + "ipv4 list : " + dnsResult.ipv4List + "\n" + "ipv6 list : " + dnsResult.ipv6List + "\n" + "dns result ttl : " + dnsResult.ttl + "\n" + "dns request cost : " + dnsResult.rtt + "\n" + "client ip : " + dnsResult.cip + "\n"); List<DnsTaskInfo> taskInfos = dnsResult.taskInfoList; for (DnsTaskInfo taskInfo : taskInfos) { dnsResultString.append(taskInfo.toJson()).append("\n"); } Log.d(TAG, dnsResultString.toString());
在运行 App 时,您就可以通过 TAG
和 [DEBUG]
在 logcat 中找到日志,从而验证 HTTPDNS 解析是否生效。参见 DnsResult 了解每个属性的具体含义。
例如,下面的日志说明 HTTPDNS 解析对于 api3-normal.toutiaoapi.com
域名生效。
host : api3-normal.toutiaoapi.com getHttpDnsResultForHostSyncBlock cost : 86 dns source : HTTPDNS_REQUEST ipv4 list : [140.207.232.201, 140.207.232.199, 140.207.236.195, 140.207.232.196, 140.207.236.193, 140.207.236.191, 140.207.232.197, 140.207.236.192, 140.207.232.200, 140.207.232.198, 140.207.236.190, 140.207.236.197, 140.207.232.194, 140.207.232.195, 140.207.236.196, 140.207.236.194] ipv6 list : [2408:870c:1000:6:3::3e8, 2408:870c:1000:6:3::3e9] dns result ttl : 51 dns request cost : 80 client ip : 211.95.64.134 {"type":0,"duration":84,"error":0,"httpdns_subtype":0}
如果 HTTPDNS 解析不生效,您可以根据 error
属性返回的错误码排查问题。参见 常见问题。
在您的 App 上线前,火山引擎建议您把 HTTPDNS SDK 返回的日志信息上报到您的 App 服务端,用于记录和数据统计。建议上报的日志信息包括 DNS 解析结果来源、解析异常错误码、SDK 解析耗时、SDK 是否命中缓存等。
在 App 灰度上线过程中,您需要关注您上报的日志信息是否存在异常。如果日志信息出现异常,您需要停止灰度并排查问题。