[gogf/gf]HTTP 服务端出错易导致上层 API 网关出现 panic

2024-07-09 345 views
5

go version go1.15.8 linux/amd64

github.com/gogf/gf v1.16.5

HTTP 客户端发起的请求通过 API 网关进行路由转发;API 网关反向代理到 HTTP 服务端。

当服务端出现 卡死(导致超时 context canceled 错误)/崩溃(导致连接断开 EOF错误) 等情况后,API 网关日志中易出现如下输出:

image

是否有人遇到过类似问题,抑或是我使用方法有误?

如果是已知问题,是否有解决方案和解决计划。

回答

6

@lrioo 您的案例中可能存在错误ghttp_server_handler.go:88。如果您提交 PR,我们将不胜感激,否则将安排进一步检查。

1

@gqcn 我读过代码ghttp_server_handler.go,但不知道这种恐慌是怎么发生的。很抱歉。

2

您能否提供更多细节来重现该案例?这将有助于解决问题。

6

@starccck

我们用g.Server().Group()它来处理路由器。

g.Server().Group("/", func(group *ghttp.RouterGroup) {
    group.ALL("/*", api.ReverseProxy.Reverse)
})

并使用底层ResponseWriter和进行ReverseProxy Request

func (p *reverseProxy) Reverse(r *ghttp.Request) {
    p.ServeHTTP(r.Response.ResponseWriter, r.Request)
}

底层依赖关系ReverseProxy.ServeHTTPnet/http/httputil/reverseproxy.go

7

@lrioo 请试试最新的master分支,如果问题依旧,请提供下复现该问题的,可运行的代码。