我有一个Go应用程序,同时启用了http(在端口80上)和https(在端口443上)。
我不断收到很多这三种错误:
http2: server: error reading preface from client 79.49.31.60:37993: timeout waiting for client preface
http: TLS handshake error from 151.38.29.250:44235: EOF
http: TLS handshake error from 2.239.197.163:6742: read tcp x.xxx.xxx.xxx:443->2.239.197.163:6742: i/o timeout
任何人都可以解释这些内容的含义吗?
请注意:所有这些请求都来自移动浏览器(在Android和iOS设备上)
答案 0 :(得分:7)
http2: server: error reading preface from client 79.49.31.60:37993: timeout waiting for client preface
这意味着客户端在服务器超时之前未能发送http2连接前言(https://tools.ietf.org/html/rfc7540#section-3.5)。
http: TLS handshake error from 151.38.29.250:44235: EOF
这意味着当服务器和客户端执行TLS握手时,服务器看到连接已关闭,即EOF。
http: TLS handshake error from 2.239.197.163:6742: read tcp x.xxx.xxx.xxx:443->2.239.197.163:6742: i/o timeout
这意味着当服务器在TLS握手期间等待从客户端读取时,客户端在关闭连接之前没有发送任何内容。
正如@JimB所指出的,那些看起来很正常。如果您认为超时时间过早,您可以通过定义自定义net.http.Transport
:https://golang.org/pkg/net/http/#Transport来定义自定义超时,并为超时设置更高的值。