等待标头时超出客户端超时

Bon*_*ndy 7 performance go newrelic newrelic-platform

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

我不在任何防火墙或任何防火墙后面。我们运行良好的java服务器(同一网段)中的新Relic。

我们已经尝试过:

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

    {"exception":{"message":"Server Error","error_type":"RuntimeError"}}

  • 使用 ./nrdiag 进行故障排除说“没有发现问题”

下面是我们的代码:

    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()
        })
    }
Run Code Online (Sandbox Code Playgroud)

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

(28422) 2019/07/29 18:08:50.058559 {"level":"warn","msg":"应用程序连接失败","context":{"error":"发布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 在等待标题时超出)

Jos*_*Kan 6

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

\n\n

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

\n\n
    \n
  1. 选择 IPv4 设置选项卡。
  2. \n
  3. 禁用 \xe2\x80\x9cAutomatic\xe2\x80\x9d 切换开关并输入 DNS 解析器的 IP 地址,以逗号分隔。我们\xe2\x80\x99将使用Google DNS名称服务器:

    \n\n

    8.8.8.8,8.8.4.4

  4. \n
\n\n

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

\n