swoole http2 Server 与 Golang http2Clinet 通讯过程中几率性出现乱码问题
Please answer these questions before submitting your issue. Thanks!
$serv = new Swoole\Server('0.0.0.0', 9501);
$serv->set(array(
'open_http2_protocol' => true,
...
));
$serv->on('request',function($request,$response){
$data = json_encode(['a'=>1]);
$response->end($data);
});
环境相关:
swoole:

php:

GCC:
kernel:

正常返回:

几率性乱码返回:

@matyhtf 求帮助
请按issue模板贴出问题, 否则issue将被忽略乃至关闭
请按issue模板贴出问题, 否则issue将被忽略乃至关闭
已全部按照issue模版重新提交,烦请查看。
可以先尝试升级一下Swoole版本, go的客户端怎么写的可以贴一下
可以先尝试升级一下Swoole版本, go的客户端怎么写的可以贴一下
更新到最新版本,问题依旧。Go的代码可见于:
https://github.com/ssgo/httpclient/blob/master/HttpClient.go
粘贴片段:
http.Client{
Transport: &http2.Transport{
AllowHTTP: true,
DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) {
return net.Dial(network, addr)
},
},
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
Timeout: timeout,
}
hyperf实测http2 server process模式也一直有问题 base模式则没问题。 关注一下
同样遇到。。。。。
同样遇到。。。。。
是否是PROCESS模式或是设置了dispatch_mode?是的话改成BASE模式,PROCESS模式如果有worker挂掉过,可能会出现压缩动态表丢失的问题,这个是PROCESS模式架构导致的问题,不容易解决。
同样遇到。。。。。
是否是PROCESS模式或是设置了dispatch_mode?是的话改成BASE模式,PROCESS模式如果有worker挂掉过,可能会出现压缩动态表丢失的问题
是PROCESS模式,其他默认。跑路了,怎么知道worker有没挂过???
日志里会有,HTTP的服务器用BASE模式会更好,性能也好一些
我的还不是乱码,是头解析错误,导致返回 404错误给客户端。
我说的问题就是会首先导致头解析错误
嗯,也是概率出现,要go那边断开链接,重新链才正常。否则发生错误后,一直404