web-dev-qa-db-ja.com

Golang:http2およびTLSハンドシェイクエラー

Http(ポート80)とhttps(ポート443)の両方が有効になっているGoアプリケーションがあります。

私はこれらの3種類のエラーをたくさん受け続けます:

  • 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デバイス))

11
Daniele B
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 、タイムアウトに高い値を設定します。

8