golang net http庫相關逾時的設定

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 net.http 包中的逾時設定
服務端
app.Server.ReadTimeout app.Server.WriteTimeout
是針對所有請求設定的選項
預設 net.http keepalived 開啟,逾時時間為 3 分鐘,如下
  1942    type tcpKeepAliveListener struct {   1943          *net.TCPListener   1944    }   1945   1946    func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) {   1947          tc, err := ln.AcceptTCP()   1948          if err != nil {   1949              return   1950          }   1951          tc.SetKeepAlive(true)   1952          tc.SetKeepAlivePeriod(3 * time.Minute)   1953          return tc, nil   1954    }
沒看到保活逾時的配置選項,生產環境可以禁掉
針對每一串連,設定逾時,可以參考
http://grokbase.com/t/gg/golang-nuts/12czccncw7/go-nuts-net-http-server-readtimeout-and-keep-alive-interaction

用戶端
剛才看了下,golang http 庫用戶端有5個逾時設定,一個是 Client 裡面的  Timeout,一個是 Client 使用的 Transport 的  ResponseHeaderTimeout,還有三個是 Transport 內部的 Dialer 的逾時設定,Timeout,KeepAlive,Deadline。
通過查看 golang 代碼發現,在執行 http 請求之前, 如果 Client.Timeout > 0,會使用 time.AfterFunc 定義一個回掉函數,逾時後調用,此函數會取消進行中中的請求。
Dialer 的 Timeout 和 Deadline 是連線逾時時間,建立串連過程中使用
發送請求,接收響應 分別由兩個協程處理。發送請求後,Transport 裡的逾時時間 ResponseHeaderTimeout 開始計時,因此它指的是等待響應的逾時時間。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.