[alibaba/tengine]后端长连接。

2024-01-30 266 views
4

tengine 后端支持 长连接嘛。nginx 支持和 后端保持着长连接。tengine 怎么配置呢

回答

8

谢谢。因为,PHP 海量请求 Java 端,但 PHP 是短连接。如果在 Java 前面挡一个 Tengine ,而 Tengine 后面和 java 端保持长连接,那这个性能在海量请求的情况下,是非常优越的。让擅长的组件干擅长的活。 链路长了,RT 不一定变高。

2

upstream backend { server 127.0.0.1:8080; keepalive 32; keepalive_timeout 30s; # 设置后端连接的最大idle时间为30s } 这样配置就可以了嘛?但 Nginx 后面还多了一串呢?

0

Nginx那一串都是需要的

8

worker_processes 2; worker_cpu_affinity 01 10;

upstream httpd { server 10.2.223.158:8081; keepalive 32; keepalive_timeout 43200s; # 设置后端连接的最大idle时间为43200s

keepalive_requests 8192;

}

server { listen 80; server_name netty_nginx.com;

access_log logs/rpc_access.log;
error_log logs/rpc_error.log;

location /rpc_proxy/send_message {
    proxy_pass http://httpd/rpc_proxy/send_message;

    proxy_http_version 1.1;
    proxy_set_header Connection "";

}

}

我想跟 Java 后端保持着长连接。但在实际的压测过程中,发现和后端的连接大大超过了 32*2 了,而且,也不算是长连接,因为一些端口一会儿就没有了。

0

java是否配置了支持了长连接? 可以简单抓包看下交互过程。 sudo tcpdump -nn -s0 -A -i any host 10.2.223.158

0

压测工具返回的结果: Host: httpd Content-Length: 242 Accept: application/json Content-Type: application/json User-Agent: Apache-HttpClient/4.5.2 (Java/1.7.0_71)

postman 请求返回的结果: connection →keep-alive content-length →76 content-type →application/json;charset=UTF-8 date →Tue, 06 Feb 2018 02:56:40 GMT server →Husor/1.1.2

多了一个 keep-alive 。我觉得,是 jmeter 压测的姿势不对。jmeter 设置的协议是 http 。我改成了 http1.1 就可以了,但即使不改的话,好像还是短连接的。

谢谢啦。