当打破电话网时golang内存泄漏.LookupHost by time.After

时间:2016-10-29 03:50:05

标签: go

我使用此功能限制DNS服务器的响应时间

exports

问题是这个功能吃了记忆 我认为这是因为我打破了updateStatus系统调用。

有什么方法可以避免这种情况吗? 可能是如何通过超时查询DNS服务器的其他方式?

1 个答案:

答案 0 :(得分:1)

您可以查看bogdanovich/dns_resolver

中提议的替代实施方案

dns_resolver.go确实包含超时管理

resolver := dns_resolver.New([]string{"8.8.8.8", "8.8.4.4"})
// OR
// resolver := dns_resolver.NewFromResolvConf("resolv.conf")

// In case of i/o timeout
resolver.RetryTimes = 5

然后,您可以将所有调用包装在goroutine中,以便调用不会突然中断net.LookupHost()

ip, err := resolver.LookupHost("google.com")
if err != nil {
    log.Fatal(err.Error())
}
log.Println(ip)
// Output [216.58.192.46]