欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

nginx配置长连接

发布时间:2025/1/21 编程问答 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 nginx配置长连接 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

http {keepalive_timeout 20; --长连接timeoutkeepalive_requests 8192; --每个连接最大请求数 } events {worker_connections 102400; }

 

 

 

转:http://bert82503.iteye.com/blog/2152613

先说说服务为什么使用HTTPs长连接技术?有如下几个原因: 对响应时间要求较高; 服务走的是公网,客户端与服务端的TCP建立的三次握手和断开的四次握手都需要40ms左右(真实数据包计算出来的),共需要80ms左右; 每个接入方使用的IP就若干个,需要建立的请求连接有限。 使用长连接技术,可以大幅减少TCP频繁握手的次数,极大提高响应时间;同时,即使使用长连接技术,也不需要消耗很多的系统资源用来缓存sockets会话信息。以下是在自己电脑上验证三者之间的长连接请求,连接存活时间都为5min。 【环境】 操作系统:Ubuntu 14.04 LTS Nginx:1.6.2 Tomcat:7.0.51 JDK:1.7.0_51 Client:HttpClient 4.3.5【相关配置】 1. Nginx - 反向代理 nginx.conf: http {...### 与Client连接的长连接配置### http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests# 设置通过"一个存活长连接"送达的最大请求数(默认是100,建议根据客户端在"keepalive"存活时间内的总请求数来设置)# 当送达的请求数超过该值后,该连接就会被关闭。(通过设置为5,验证确实是这样)keepalive_requests 8192;# http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout# 第一个参数设置"keep-alive客户端长连接"将在"服务器端"继续打开的超时时间(默认是75秒,建议根据具体业务要求来,但必须要求所有客户端连接的"Keep-Alive"头信息与该值设置的相同(这里是5分钟),同时与上游服务器(Tomcat)的设置是一样的)# 可选的第二个参数设置“Keep-Alive: timeout=time”响应头字段的值keepalive_timeout 300s 300s;...include /etc/nginx/web_servers.conf;include /etc/nginx/proxy_params; }web_servers.conf: upstream web_server {server 127.0.0.1:8080;# http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive# 连接到上游服务器的最大并发空闲keepalive长连接数(默认是未设置,建议与Tomcat Connector中的maxKeepAliveRequests值一样)# 当这个数被超过时,使用"最近最少使用算法(LUR)"来淘汰并关闭连接。keepalive 768; }server {listen 80;server_name lihg.com www.lihg.com;location / {proxy_pass http://web_server;### 与上游服务器(Tomcat)建立keepalive长连接的配置,可参考上面的keepalive链接里的"For HTTP"部分### http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version# 设置代理的HTTP协议版本(默认是1.0版本)# 使用keepalive连接的话,建议使用1.1版本。proxy_http_version 1.1;# http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header# 允许重新定义或追加字段到传递给代理服务器的请求头信息(默认是close)proxy_set_header Connection "";proxy_redirect off;} }[参考] nginx反向代理配置keepalive keepalive for HTTP - Module ngx_http_core_module2. Tomcat conf/server.xml:<!-- maxThreads:由此连接器创建的最大请求处理线程数,这决定可同时处理的最大并发请求数(默认为200)minSpareThreads:保持运行状态的最小线程数(默认为10)acceptCount:接收传入的连接请求的最大队列长度(默认队列长度为100)connectionTimeout:在接收一条连接之后,连接器将会等待请求URI行的毫秒数(默认为60000,60秒)maxConnections:在任何给定的时间,服务器能接收和处理的最大连接数(NIO的默认值为10000)keepAliveTimeout:在关闭这条连接之前,连接器将等待另一个HTTP请求的毫秒数(默认使用connectionTimeout属性值)maxKeepAliveRequests:在该连接被服务器关闭之前,可被流水线化的最大HTTP请求数(默认为100)enableLookups:启用DNS查询(默认是DNS查询被禁用)compression:连接器是否启用HTTP/1.1 GZIP压缩,为了节省服务器带宽compressionMinSize:指定输出响应数据的最小大小(默认为2048,2KB)compressableMimeType:可使用HTTP压缩的文件类型server:覆盖HTTP响应的Server头信息--><Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="768"minSpareThreads="512"acceptCount="128"connectionTimeout="1000"maxConnections="1024"keepAliveTimeout="300000"maxKeepAliveRequests="768"enableLookups="false"URIEncoding="utf-8"redirectPort="8443"compression="on" compressionMinSize="1024" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/xml"server="webserver" />[参考] The HTTP Connector - Tomcat 7 Configuration Reference3. Client 客户端HTTP "Keep-Alive"实现代码,请打开下一行的链接。 KeepAliveHttpClientsTest -> httpclient-x【结果验证】 使用 "sudo netstat -antp | grep 80" 监控与Nginx相关的线程状态

转载于:https://my.oschina.net/u/3346994/blog/907040

总结

以上是生活随笔为你收集整理的nginx配置长连接的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。