登录
首页 >  Golang >  Go问答

评估 Go 中反向代理的性能

来源:stackoverflow

时间:2024-02-18 18:51:23 157浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《评估 Go 中反向代理的性能》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我有一个基于http/net的网络反向代理。我正在使用 NewSingleHostReverseProxy 函数。如何测量目标 Web 服务器的响应时间?


正确答案


你可以做这样的事情。将 proxy.transport 与另一个 http.roundtripper 实现包装起来,该实现计算 roundtrip 响应所需的时间。

我认为这通常会向您显示“响应时间”。不是“请求时间”,因为仍然可以从响应中读取正文,因此请求可能仍在进行中,但这应该显示服务器大致需要多长时间来响应请求。

package main

import (
    "fmt"
    "net/http"
    "net/http/httputil"
    "net/url"
    "time"
)

func main() {
    url, _ := url.parse("https://stackoverflow.com")
    proxy := httputil.newsinglehostreverseproxy(url)
    proxy.transport = newtimingroundtripper(http.defaulttransport)
}

type timingroundtripper struct {
    transport http.roundtripper
}

func newtimingroundtripper(transport http.roundtripper) http.roundtripper {
    return timingroundtripper{transport: transport}
}

func (rt timingroundtripper) roundtrip(r *http.request) (resp *http.response, err error) {
    start := time.now()
    resp, err = rt.transport.roundtrip(r)
    fmt.println("request", r.url, time.since(start))
    return resp, err
}

如果您想传递自定义 *tls.config (如下所示),您可以使用 same parameters 作为 http.defaulttransport 但使用自定义 *tls.config 创建新传输。

    var mytransport http.roundtripper = &http.transport{
        proxy: http.proxyfromenvironment,
        dialcontext: (&net.dialer{
            timeout:   30 * time.second,
            keepalive: 30 * time.second,
        }).dialcontext,
        forceattempthttp2:     true,
        maxidleconns:          100,
        idleconntimeout:       90 * time.second,
        tlshandshaketimeout:   10 * time.second,
        expectcontinuetimeout: 1 * time.second,
        tlsclientconfig:       &tls.config{insecureskipverify: true},
    }

然后像这样初始化:

proxy.Transport = NewTimingRoundtripper(myTransport)

理论要掌握,实操不能落!以上关于《评估 Go 中反向代理的性能》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>