swoole-src icon indicating copy to clipboard operation
swoole-src copied to clipboard

swoole http2 Server 与 Golang http2Clinet 通讯过程中几率性出现乱码问题

Open JamesJoe-C opened this issue 6 years ago • 13 comments

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

image

php:

43C9E8A6F85D2623D241CA2E4C3AEDF2

GCC:

image

kernelimage

正常返回: 图片

几率性乱码返回: 图片1

JamesJoe-C avatar May 20 '19 08:05 JamesJoe-C

@matyhtf 求帮助

gyf19 avatar May 20 '19 14:05 gyf19

请按issue模板贴出问题, 否则issue将被忽略乃至关闭

twose avatar May 21 '19 06:05 twose

请按issue模板贴出问题, 否则issue将被忽略乃至关闭

已全部按照issue模版重新提交,烦请查看。

JamesJoe-C avatar May 21 '19 07:05 JamesJoe-C

可以先尝试升级一下Swoole版本, go的客户端怎么写的可以贴一下

twose avatar May 21 '19 08:05 twose

可以先尝试升级一下Swoole版本, go的客户端怎么写的可以贴一下

image 更新到最新版本,问题依旧。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,
	}

JamesJoe-C avatar May 21 '19 09:05 JamesJoe-C

hyperf实测http2 server process模式也一直有问题 base模式则没问题。 关注一下

Reasno avatar Apr 12 '20 13:04 Reasno

同样遇到。。。。。

CXW0504 avatar Oct 09 '21 09:10 CXW0504

同样遇到。。。。。

是否是PROCESS模式或是设置了dispatch_mode?是的话改成BASE模式,PROCESS模式如果有worker挂掉过,可能会出现压缩动态表丢失的问题,这个是PROCESS模式架构导致的问题,不容易解决。

twose avatar Oct 09 '21 09:10 twose

同样遇到。。。。。

是否是PROCESS模式或是设置了dispatch_mode?是的话改成BASE模式,PROCESS模式如果有worker挂掉过,可能会出现压缩动态表丢失的问题

是PROCESS模式,其他默认。跑路了,怎么知道worker有没挂过???

CXW0504 avatar Oct 09 '21 10:10 CXW0504

日志里会有,HTTP的服务器用BASE模式会更好,性能也好一些

twose avatar Oct 09 '21 10:10 twose

我的还不是乱码,是头解析错误,导致返回 404错误给客户端。

CXW0504 avatar Oct 15 '21 01:10 CXW0504

我说的问题就是会首先导致头解析错误

twose avatar Oct 15 '21 01:10 twose

嗯,也是概率出现,要go那边断开链接,重新链才正常。否则发生错误后,一直404

CXW0504 avatar Oct 15 '21 01:10 CXW0504