1、nginx支持TCP代理有什麼作用
通過這個模塊,代抄理後端其它襲協議應用,如mysql, nosql之類的
比如用Node.JS寫了一些TCP服務,那麼Nginx就可以給這些Node.JS做TCP代理,比如開啟多個Node.JS監聽不同的埠,經過Nginx TCP代理到upstream實現負載均衡,Nginx比Haproxy的優勢還在於Nginx能夠提供HTTP/HTTPS服務,可以處理靜態資源,或者把一些其他請求交給其他語言來處理,比如可以把一些輸出HTML頁面的請求fastcgi_pass給PHP-FPM處理,總而言之,Nginx更像是在做一個可擴展的Web開發系統.另外,Nginx已經支持WebSocket反向代理,而移動瀏覽器對HTTP上的全雙工通信WebSocket的支持還是不錯的,只是還沒有足夠成熟.
2、nginx 伺服器怎麼修改埠
linuxNginx達並發數高TCP TIME_WAIT套接字數量經達兩、三萬伺服器容易拖死事實我簡單通修改Linux內核參數減少Nginx伺服器TIME_WAIT套接字數量進提高Nginx伺服器並發性能
vi /etc/sysctl.conf
增加幾行:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000簡單說明:
net.ipv4.tcp_syncookies = 1 表示啟SYN Cookies現SYN等待隊列溢啟用cookies處理防範少量SYN攻擊默認0表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示啟重用允許TIME-WAIT sockets重新用於新TCP連接默認0表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示啟TCP連接TIME-WAIT sockets快速收默認0表示關閉
net.ipv4.tcp_fin_timeout = 30 表示套接字由本端要求關閉參數決定保持FIN-WAIT-2狀態間
net.ipv4.tcp_keepalive_time = 1200 表示keepalive起用候TCP發送keepalive消息頻度預設2改20鍾
net.ipv4.ip_local_port_range = 1024 65000 表示用於向外連接埠范圍預設情況:3276861000改102465000
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN隊列度默認1024加隊列度8192容納更等待連接網路連接數
net.ipv4.tcp_max_tw_buckets = 5000 表示系統同保持TIME_WAIT套接字數量超數字TIME_WAIT套接字立刻清除並列印警告信息默認180000改 5000於Apache、Nginx等伺服器幾行參數減少TIME_WAIT套接字數量於Squid效卻項參 數控制TIME_WAIT套接字數量避免Squid伺服器量TIME_WAIT套接字拖死
echo ====================== 執行命令使配置效:=========================
#更改linux內核參數立即效命令
/sbin/sysctl -p
Nginx優化
使用FastCGI 緩存
fastcgi_cache TEST
啟FastCGI 緩存並且其制定名稱覺啟緩存非用效降低CPU 負載並且防止502 錯誤
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
指令FastCGI 緩存指定路徑目錄結構等級關鍵字區域存儲間非刪除間
其說明
Nginx 由 Igor Sysoev 俄羅斯訪問量第二 Rambler.ru 站點發已經該站點運行超兩半Igor 源代碼類BSD許證形式發布
高並發連接情況NginxApache伺服器錯替代品Nginx同作7層負載均衡伺服器使用根據我測試結 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 承受3萬並發連接數相於同等環境Apache10倍
根據我經驗4GB內存伺服器+Apache(prefork模式)般能處理3000並發連接佔用3GB內存 系統預留1GB內存我曾經兩台Apache伺服器配置文件設置MaxClients4000Apache並發連接數達 3800導致伺服器內存Swap空間用滿崩潰
台 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 伺服器3萬並發連接啟10Nginx進程消耗150M內存(15M*10=150M)啟64php-cgi進程消耗1280M內存 (20M*64=1280M)加系統自身消耗內存總共消耗2GB內存伺服器內存較完全啟25php-cgi進程 php-cgi消耗總內存數才500M
3、nginx最大連接數如何優化,nginx的tcp
我現在在復windows xp下配置nginx 但是最大並發制連接數 只能配到最高64. 我想提高最大並發連接數。查閱資料得到結果是 由於windows的文件描述符的配置過低造成最大並發數無法提高。 然後我就去修改 windows/system32/config.nt中的files=40 =》file
4、把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
有可行性,但不高。
nginx代碼不少,且近乎沒有文檔,連開發個nginx插件都麻煩的要死。只有專少量API文檔,但沒有解屬釋核心概念和流程。
且nginx是基於回調模型的。如果只是自己寫個定製協議的伺服器,大不了直接在socket上加epoll就是了。沒必要再去招惹nginx。nginx並不會在這個過程里帶給你什麼功能上的優勢,反倒要花大量時間去學nginx的內部實現。這是得不償失的。
5、nginx怎麼代理tcp的應用
1. 安裝
1
2
3
4
5
6
# wget http://nginx.org/download/nginx-1.4.4.tar.gz
# tar zxvf nginx-1.4.4.tar.gz
# cd nginx-1.4.4
# ./configure --add-mole=/path/to/nginx_tcp_proxy_mole
# make
# make install
2. 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
http {
listen 80;
location /status {
check_status;
}
}
tcp {
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
}
}
這會出現一個問題,就是tcp連接會掉線。原因在於當服務端關閉連接的時候,客戶端不可能立刻發覺連接已經被關閉,需要等到當Nginx在執行check規則時認為服務端鏈接關閉,此時nginx會關閉與客戶端的連接。
3. 保持連接配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
http {
listen 80;
location /status {
check_status;
}
}
tcp {
timeout 1d;
proxy_read_timeout 10d;
proxy_send_timeout 10d;
proxy_connect_timeout 30;
upstream cluster_www_ttlsa_com {
# simple round-robin
server 127.0.0.1:1234;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 8888;
proxy_pass cluster_www_ttlsa_com;
so_keepalive on;
tcp_nodelay on;
}
}
6、nginx支持TCP代理有什麼作用
比如Java和PHP。這類伺服器(如JBoss和PHP-FPM)的IO處理能力往往不高。
Nginx有個好處是它會把Request在讀取完專整之前buffer住,這屬樣交給後端的就是一個完整的HTTP請求,從而提高後端的效率,而不是斷斷續續的傳遞(互聯網上連接速度一般比較慢)。
同樣,Nginx也可以把response給buffer住,同樣也是減輕後端的壓力。
7、把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
通模塊代理端其協議應用mysql, nosql類
比用Node.JS寫些TCP服務,Nginx給些Node.JS做TCP代理,比啟Node.JS監聽同內埠,經Nginx TCP代理upstream實現負載均容衡
8、nginx tcp負載均衡,一台後端服務當掉,另一個能自動接管如何實現
fall=5 改成 fall=1
interval=1000 改成 interval=10000
再試
9、怎樣在nginx 中獲取每一個socket的tcpinfo
Nginx 結合FastCGI 程序可以搭建高性能web service程序。(a)Nginx不支持對外部程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI介面來調用。FastCGI介面在Linux下是socket(這個socket可以是文件socket,也可以是ip socket)。為了調用CGI程序,還需要一個FastCGI的wrapper(wrapper可以理解為用於啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如埠或者文件socket。(b)當Nginx將CGI請求發送給這個socket的時候,通過FastCGI介面,wrapper接收到請求,然後派生出一個新的線程,這個線程調用解釋器或者外部程序處理腳本並讀取返回數據;接著,wrapper再將返回的數據通過FastCGI介面,沿著固定的socket傳遞給Nginx;最後,Nginx將返回的數據發送給客戶端。這就是Nginx+FastCGI的整個運作過程,如圖1所示。FastCGI介面方式在腳本解析伺服器(CGI應用程序伺服器)上啟動一個或者多個守護進程對動態腳本進行解析,這些進程就是FastCGI進程管理器,或者稱為FastCGI引擎。 spawn-fcgi與PHP-FPM都是FastCGI進程管理器(支持PHP和C/C++)。
10、通過nginx怎麼查伺服器的tcp 新建連接數
|使用命令: netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
返回結果中 LAST_ACK N 即為正在等待處理內的請容求數