Golang DNS解析问题

时间:2015-02-09 06:34:38

标签: go

我今天正在使用https://github.com/streadway/amqp库,并根据示例here进行了粗略的实施。使用域名时工作正常,但连接到本地计算机上的流浪盒时需要相当长的时间。当我在功能中添加JSON请求到同一个服务器时遇到了问题,我遇到了各种与Rabbitmq关闭连接有关的超时问题,因为它等待了很长时间。

所以我运行以下代码,看看我是否可以隔离这个问题。

package main

import (
    "log"
    "net/http"
    "time"
)

func main() {
    start := time.Now()
    _, err := http.Get("http://local.test.dev/test")
    if err != nil {
        log.Println("%s", err.Error())
    }
    log.Printf("Time: %v", time.Since(start))
}

在运行一些测试之后,这导致了一些令人惊讶的输出。

2015/02/09 01:27:33 Time: 1.131834476s
2015/02/09 01:27:37 Time: 828.873332ms
2015/02/09 01:27:40 Time: 862.059803ms
2015/02/09 01:27:41 Time: 207.781482ms
2015/02/09 01:27:43 Time: 810.567042ms
2015/02/09 01:27:45 Time: 197.555383ms
2015/02/09 01:27:55 Time: 776.675657ms

这是traceroute命令的样子,以确保它不是其他问题。

traceroute to local.test.dev (192.168.56.101), 64 hops max, 52 byte packets
 1  local.test.dev (192.168.56.101)  0.368 ms  0.430 ms  0.252 ms

我也从上面尝试过相同的剪辑,但是用IP代替。它只有大约60ms,我发现令人惊讶,但让我认为问题不是net / http包,而是amqp库。我在amqp库中使用域名的唯一地方是以下call

amqp.Dial(amqpURI)

使用域名会有问题吗?除此之外,我无法想到可能导致查询时间过长的原因。

编辑: 我认为这是一个DNS问题,但在玩了IP与域名之后似乎并非如此。此外,amqp Dial似乎不是问题。返回连接只需4毫秒。这只留下channel.Consume作为罪魁祸首。将一些孤立的示例代码放在一起并更新......

0 个答案:

没有答案