nginx配置长连接
生活随笔
收集整理的這篇文章主要介紹了
nginx配置长连接
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
http {keepalive_timeout 20; --長(zhǎng)連接timeoutkeepalive_requests 8192; --每個(gè)連接最大請(qǐng)求數(shù) } events {worker_connections 102400; }?
?
?
轉(zhuǎn):http://bert82503.iteye.com/blog/2152613
先說(shuō)說(shuō)服務(wù)為什么使用HTTPs長(zhǎng)連接技術(shù)?有如下幾個(gè)原因: 對(duì)響應(yīng)時(shí)間要求較高; 服務(wù)走的是公網(wǎng),客戶端與服務(wù)端的TCP建立的三次握手和斷開(kāi)的四次握手都需要40ms左右(真實(shí)數(shù)據(jù)包計(jì)算出來(lái)的),共需要80ms左右; 每個(gè)接入方使用的IP就若干個(gè),需要建立的請(qǐng)求連接有限。 使用長(zhǎng)連接技術(shù),可以大幅減少TCP頻繁握手的次數(shù),極大提高響應(yīng)時(shí)間;同時(shí),即使使用長(zhǎng)連接技術(shù),也不需要消耗很多的系統(tǒng)資源用來(lái)緩存sockets會(huì)話信息。以下是在自己電腦上驗(yàn)證三者之間的長(zhǎng)連接請(qǐng)求,連接存活時(shí)間都為5min。 【環(huán)境】 操作系統(tǒng):Ubuntu 14.04 LTS Nginx:1.6.2 Tomcat:7.0.51 JDK:1.7.0_51 Client:HttpClient 4.3.5【相關(guān)配置】 1. Nginx - 反向代理 nginx.conf: http {...### 與Client連接的長(zhǎng)連接配置### http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests# 設(shè)置通過(guò)"一個(gè)存活長(zhǎng)連接"送達(dá)的最大請(qǐng)求數(shù)(默認(rèn)是100,建議根據(jù)客戶端在"keepalive"存活時(shí)間內(nèi)的總請(qǐng)求數(shù)來(lái)設(shè)置)# 當(dāng)送達(dá)的請(qǐng)求數(shù)超過(guò)該值后,該連接就會(huì)被關(guān)閉。(通過(guò)設(shè)置為5,驗(yàn)證確實(shí)是這樣)keepalive_requests 8192;# http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout# 第一個(gè)參數(shù)設(shè)置"keep-alive客戶端長(zhǎng)連接"將在"服務(wù)器端"繼續(xù)打開(kāi)的超時(shí)時(shí)間(默認(rèn)是75秒,建議根據(jù)具體業(yè)務(wù)要求來(lái),但必須要求所有客戶端連接的"Keep-Alive"頭信息與該值設(shè)置的相同(這里是5分鐘),同時(shí)與上游服務(wù)器(Tomcat)的設(shè)置是一樣的)# 可選的第二個(gè)參數(shù)設(shè)置“Keep-Alive: timeout=time”響應(yīng)頭字段的值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# 連接到上游服務(wù)器的最大并發(fā)空閑keepalive長(zhǎng)連接數(shù)(默認(rèn)是未設(shè)置,建議與Tomcat Connector中的maxKeepAliveRequests值一樣)# 當(dāng)這個(gè)數(shù)被超過(guò)時(shí),使用"最近最少使用算法(LUR)"來(lái)淘汰并關(guān)閉連接。keepalive 768; }server {listen 80;server_name lihg.com www.lihg.com;location / {proxy_pass http://web_server;### 與上游服務(wù)器(Tomcat)建立keepalive長(zhǎng)連接的配置,可參考上面的keepalive鏈接里的"For HTTP"部分### http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version# 設(shè)置代理的HTTP協(xié)議版本(默認(rèn)是1.0版本)# 使用keepalive連接的話,建議使用1.1版本。proxy_http_version 1.1;# http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header# 允許重新定義或追加字段到傳遞給代理服務(wù)器的請(qǐng)求頭信息(默認(rèn)是close)proxy_set_header Connection "";proxy_redirect off;} }[參考] nginx反向代理配置keepalive keepalive for HTTP - Module ngx_http_core_module2. Tomcat conf/server.xml:<!-- maxThreads:由此連接器創(chuàng)建的最大請(qǐng)求處理線程數(shù),這決定可同時(shí)處理的最大并發(fā)請(qǐng)求數(shù)(默認(rèn)為200)minSpareThreads:保持運(yùn)行狀態(tài)的最小線程數(shù)(默認(rèn)為10)acceptCount:接收傳入的連接請(qǐng)求的最大隊(duì)列長(zhǎng)度(默認(rèn)隊(duì)列長(zhǎng)度為100)connectionTimeout:在接收一條連接之后,連接器將會(huì)等待請(qǐng)求URI行的毫秒數(shù)(默認(rèn)為60000,60秒)maxConnections:在任何給定的時(shí)間,服務(wù)器能接收和處理的最大連接數(shù)(NIO的默認(rèn)值為10000)keepAliveTimeout:在關(guān)閉這條連接之前,連接器將等待另一個(gè)HTTP請(qǐng)求的毫秒數(shù)(默認(rèn)使用connectionTimeout屬性值)maxKeepAliveRequests:在該連接被服務(wù)器關(guān)閉之前,可被流水線化的最大HTTP請(qǐng)求數(shù)(默認(rèn)為100)enableLookups:啟用DNS查詢(默認(rèn)是DNS查詢被禁用)compression:連接器是否啟用HTTP/1.1 GZIP壓縮,為了節(jié)省服務(wù)器帶寬compressionMinSize:指定輸出響應(yīng)數(shù)據(jù)的最小大小(默認(rèn)為2048,2KB)compressableMimeType:可使用HTTP壓縮的文件類型server:覆蓋HTTP響應(yīng)的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"實(shí)現(xiàn)代碼,請(qǐng)打開(kāi)下一行的鏈接。 KeepAliveHttpClientsTest -> httpclient-x【結(jié)果驗(yàn)證】 使用 "sudo netstat -antp | grep 80" 監(jiān)控與Nginx相關(guān)的線程狀態(tài)轉(zhuǎn)載于:https://my.oschina.net/u/3346994/blog/907040
總結(jié)
以上是生活随笔為你收集整理的nginx配置长连接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# WebAPI设置跨域
- 下一篇: ssh 无密码登陆