<Connector port="9999" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" acceptCount="150000"
maxThreads="2000" maxConnections="150000" enableLookups="false" redirectPort="8443" />
複製代碼
connectionTimeout——默認設置爲20秒。經過修改該參數,能夠修改tomcat的請求超時時間html
acceptCount——當tomcat的線程數達到maxThreads後,新的請求就會排隊等待,超過排隊數的請求會被拒絕,acceptCount最好大於等於maxThreadslinux
maxThreads:nginx
(1)、部署的程序偏計算型,主要利用cpu資源,應該將該參數設置小一點,減少同一時間搶佔cpu資源的線程個數。 (2)、部署的程序對io、數據庫佔用時間較長,線程處於等待的時間較長,應該將該參數調大一點,增長處理個數。web
maxConnections——這個值表示最多能夠有多少個socket鏈接到tomcat上。NIO模式下默認是10000數據庫
enableLookups——爲了消除DNS查詢對性能的影響咱們能夠關閉DNS查apache
location ^~ /wnhz/websocket/ {
proxy_connect_timeout 60s;——該指令設置與upstream server的鏈接超時時間,有必要記住,這個超時不能超過75秒
proxy_read_timeout 3600s;——該指令設置與代理服務器的讀超時時間。它決定了nginx會等待多長時間來得到請求的響應。這個時間不是得到整個response的時間,而是兩次reading操做的時間
proxy_send_timeout 60s; ——這個指定設置了發送請求給upstream服務器的超時時間。超時設置不是爲了整個發送期間,而是在兩次write操做期間。若是超時後,upstream沒有收到新的數據,nginx會關閉鏈接
proxy_http_version 1.1;——支持websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://test/websocket/;
}
--------------------- 官方配置--------------------------------------
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
複製代碼
內存的佔用分兩部分,一部分是內核中tcp協議棧結構佔用的內存,一部分是nginx中維持雙向鏈接數據結構佔用的內存
按照理想情況,一條tcp鏈接的數據結構在內存中佔用大約4KB左右,nginx的內存佔用,沒有統計相關的結構體,這裏就等於2KB(nginx的內存利用很是高效,有內存池)
對於如今的服務器來講內存、cpu、網絡都不會是瓶頸,所以這裏不作討論
複製代碼
可能須要調整內核參數,文件描述符的數量其實也是和內存相關的,由於每打開一個tcp鏈接,就得佔用一個文件描述符。
內核參數:fs.file-max
這是和系統資源相關的,也不會是瓶頸
複製代碼
內核參數爲:net.ipv4.ip_local_port_range,且最大值爲65535
linux內核是經過{local_ip, local_port, remote_ip, remote_port}這個四元組來標識一條惟一的tcp鏈接的。
1)對於websocket服務器自身而言,local_ip, local_port是肯定的,在內存、cpu足夠的狀況下,其能夠支撐 (client_ip數量*2^16)條鏈接。也就是說只要服務器資源足夠,必定不會是瓶頸。
2)對於nginx服務器來講,local_ip, local_port也是肯定的,不一樣的是,它還要做爲client去鏈接websocket服務器,這是要佔用一個端口的。
所以,nginx能支撐的websocket鏈接數最大爲:(代理的websocket服務器IP數量*2^16),若是隻有一個websocket服務器IP,那麼就只有65536,去掉0端口,就只有65535.
複製代碼
百度介紹相關可自行測試。後端