You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Windows 2019中gethostbyname的调用超时时长?

配置Windows中gethostbyname的调用超时时长(针对Windows Server 2019)

问题背景

在Windows 10中调用Dns.GetHostAddresses("an_hostname_that_does_not_exist");时,若主机名不存在,会阻塞30秒才抛出异常;Windows Server 2019中该阻塞时长约10秒,Windows Server 2012则不足1秒。需求是不修改调用代码的前提下,调整Windows Server 2019中gethostbyname(Dns.GetHostAddresses最终依赖的底层接口)的超时时长。

解决方案:通过注册表配置DNS查询参数

可通过修改DNS客户端服务的注册表项来调整查询超时,具体步骤如下:

  1. 打开注册表编辑器:运行regedit命令
  2. 定位到注册表路径:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
    
  3. 添加/修改以下DWORD类型的注册表项:
    • QueryTimeout:设置单次DNS查询的超时时间(单位:毫秒),例如设为1000代表1秒
    • MaxRetryCount:设置DNS查询的重试次数,默认通常为2次

    总阻塞时长计算公式:QueryTimeout * (MaxRetryCount + 1),包含初始查询和所有重试的时间总和

  4. 应用配置:重启DNS客户端服务(执行命令net stop dnscache && net start dnscache),或直接重启系统

验证与补充

  • 修改完成后,测试Dns.GetHostAddresses对不存在主机名的查询,观察阻塞时长是否符合预期
  • 若注册表中原本没有上述项,手动创建即可
  • 这些配置会影响系统中所有依赖DNS客户端服务的网络查询操作
  • 如果配置未生效,检查是否有组策略或其他系统设置覆盖了注册表项

内容的提问来源于stack exchange,提问作者R SG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:10:34