9

我收到以下错误,我使用的是 go v1.10.4 linux/amd64。

我不在任何防火墙或任何东西后面。我们拥有的 Java 服务器(同一网段)中的 New Relic 运行良好。

我们尝试过:

  • 将超时时间增加到 60 秒
  • 在服务器中使用 http2
  • 使用 Postman 返回 503 和响应:

    {“异常”:{“消息”:“服务器错误”,“错误类型”:“运行时错误”}}

  • 使用 ./nrdiag 进行故障排除时显示“未发现任何问题”</li>

下面是我们的代码:

    config := newrelic.NewConfig(os.Getenv("NEW_RELIC_APP_NAME"), os.Getenv("NEW_RELIC_KEY"))

    config.Logger = newrelic.NewDebugLogger(os.Stdout)

    app, err := newrelic.NewApplication(config)
    if err != nil {
        fmt.Println("Failed to create newrelic application", err)
        os.Exit(1)
    }

.................

        httpListener, err := net.Listen("tcp", *httpAddr)
        if err != nil {
            oldlog.Print("Error: ", err)
            logger.Log("transport", "HTTP", "during", "Listen", "err", err)
            os.Exit(1)
        }
        g.Add(func() error {
            logger.Log("transport", "HTTP", "addr", *httpAddr)
            return http.Serve(httpListener, nrgorilla.InstrumentRoutes(httpHandler, app))
        }, func(error) {
            httpListener.Close()
        })
    }

然而,这是我们得到的,注意 some_key 已被删除:

(28422) 2019/07/29 18:08:50.058559 {"level":"warn","msg":"application connect failure","context":{"error":"Post https://collector-001 .eu01.nr-data.net/agent_listener/invoke_raw_method?license_key=some_key \u0026marshal_format=json\u0026method=connect\u0026protocol_version=17:net/http:请求已取消(等待标头时超出Client.Timeout)“}}

4

2 回答 2

4

我认为这是由于 DNS 网络超时。

您可以使用以下步骤轻松测试这一点(在 Ubuntu 中)

  1. 选择 IPv4 设置选项卡。
  2. 禁用“自动”切换开关并输入 DNS 解析器的 IP 地址,以逗号分隔。我们将使用 Google DNS 名称服务器:

    8.8.8.8,8.8.4.4

如果它有效,那么您可以将 DNS 重置为“自动”

于 2020-04-13T11:02:47.633 回答
0

在 Windows 操作系统上,使用 WSL2 运行 Linux 容器,我按照以下步骤操作,

  1. 运行命令 docker logout
  2. 运行命令 docker network prune,以便删除网络的所有预配置设置。
  3. 从 Docker 设置中,使用 8.8.8.8 启用 DNS 服务器配置
  4. 重新启动 Docker
  5. 现在使用注册表执行登录命令登录,docker login {registry}
于 2020-10-13T08:25:30.003 回答