[alibaba/tengine]单个长连接http请求逐个执行效率低下问题

2024-07-10 512 views
6

背景: Nginx 实现http长连接,代理后台server请求,在使用过程中,发现客户端建立一个http长连接,每秒发送300个http请求包,但nginx 本身对http 请求包是串行逐个处理(响应+ACK),导致连接堆积请求 问题: tengine 解决单个http长连接串行处理http request请求包问题吗

回答

6

我也想知道这个问题的答案。坐等

8

这是http1协议规定的,长连接串行处理。 一个方法是开更多的长连接来提升处理效率。 更好的方法是使用http2协议,一个连接多路复用,并发处理。

1

才发现你又加了背景,不知道你说的每秒发送300个http请求是pipeline吗?还是正常的长连接请求?

9

是在建立tcp长连接后,每秒发送300个http request包

1

已经使用了pipeline

9

http1协议就是如此,串行顺序处理。http2就是解决类似问题而生的。 如果客户端是并发发送的, 你把tengine长连接关闭改成短连接看是否有提升?

0

客户端暂时无法调整请求模式,短链接需要客户端修改逻辑,我希望看看哪种修改能满足性能又能减少客户端逻辑调整

9

如果你配置tengine只支持短连接, 客户端是什么行为呢? keepalive_timeout 0;

4

关注这个问题,线上经常碰见,目前已经是全站https+http/2 了, 还是碰见过几次,具体要在跟进了,没有复现