tengine 后端支持 长连接嘛。nginx 支持和 后端保持着长连接。tengine 怎么配置呢
[alibaba/tengine]后端长连接。
回答
长连接配置同nginx,然后tengine还多一个超时设置。
谢谢。因为,PHP 海量请求 Java 端,但 PHP 是短连接。如果在 Java 前面挡一个 Tengine ,而 Tengine 后面和 java 端保持长连接,那这个性能在海量请求的情况下,是非常优越的。让擅长的组件干擅长的活。 链路长了,RT 不一定变高。
upstream backend { server 127.0.0.1:8080; keepalive 32; keepalive_timeout 30s; # 设置后端连接的最大idle时间为30s } 这样配置就可以了嘛?但 Nginx 后面还多了一串呢?
Nginx那一串都是需要的
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 了,而且,也不算是长连接,因为一些端口一会儿就没有了。
java是否配置了支持了长连接? 可以简单抓包看下交互过程。
sudo tcpdump -nn -s0 -A -i any host 10.2.223.158
压测工具返回的结果: 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 就可以了,但即使不改的话,好像还是短连接的。谢谢啦。