HTTPDNS SDK解析时延优化方案

2024-09-18 10:38:19 浏览数 (2)

问题现象

自2024年9月14日22点52分起,系统监测到部分省份联通网络线路在尝试访问移动解析服务主IP地址119.29.29.98失败。目前,平台团队正在积极处理中,暂时无法确定服务完全恢复时间。

对使用HTTPDNS SDK的用户,当前SDK内部使用了LocalDNS和备份IP进行兜底,解析成功率将不受影响。但SDK会周期性尝试探测服务可用性,导致每十分钟解析时延会间歇性增加一次,如果您需要对解析时延进行优化,可参考本文档。

对直接调用API的用户,建议根据实际的解析需求情况,可以将服务IP地址切换至备份线路IP地址119.28.28.98,或使用LocalDNS进行解析域名。

若您在切换备份线路IP有任何问题,请随时联系腾讯云处理,或提交工单。

原因

使用SDK未设置解析超时时间的情况下,超时时间默认是2000ms。当HTTPDNS请求不可用时,会等待解析超时时间结束才会返回解析结果(此结果为LocalDNS解析结果)。10分钟后会恢复原解析请求逻辑,导致每10分钟解析时延会间歇性增加。

解决方案

可以通过调整HTTPDNS SDK的解析超时时间,来优化解析时延。

iOS SDK接入方式

通过timeout字段来调整超时时间,示例如下:

代码语言:javascript复制
  DnsConfig *config = new DnsConfig();
  config->dnsId = dns授权id;
  config->dnsKey = @"加密密钥";
  config->encryptType = HttpDnsEncryptTypeDES;
  config->debug = YES;
  config->timeout = 2000; //超时时间,单位ms,默认值2000ms
  [[MSDKDns sharedInstance] initConfig: config];

Android SDK接入方式

通过timeoutMills字段来调整超时时间,示例如下:

代码语言:javascript复制
DnsConfig dnsConfigBuilder = DnsConfig.Builder()
    .dnsId("dns授权id")
    .dnsKey("加密密钥")
    .desHttp()
    .timeoutMills(2000) //超时时间,单位ms,默认值2000ms
    .build();
MSDKDnsResolver.getInstance().init(this, dnsConfigBuilder);

说明:超时时间也不宜设置过低,建议超时时间设置800ms。

0 人点赞