關於nginx並發連接能力優化(epoll模式、TIME_WAIT告警及長連接、worker_connections)


關於nginx並發連接能力優化(epoll模式、TIME_WAIT告警及長連接、worker_connections)

標簽:nginx並發,nginx連接數,epoll模式,TIME_WAIT告警,長連接,ng優化,ESTABLISHED,worker_connections,OTHERSTATE     發布時間:2018-12-21   

一、前言

nginx服務器老是報告TIME_WAIT 告警, ESTABLISHED 告警,檢查nginx配置和系統網絡配置發現現有的配置並發能力太弱,無法滿足現有的並發請求的需求。

二、解決方法

1. 改進方法

1
2
3
4
a、使用epoll模式,增加並發連接數,增加nginx系統並發連接能力。
b、后端使用長連接, 提高端口利用率,減少TIME_WAIT狀態比例, 使系統可以允許更多的TIME_WAIT.
c、優化tcp連接工作模式,減少FIN2_WAIT狀態比例 (對應監控中的OTHERSTATE)。
d、合理的設置監控參數

2. 配置操作

2.1 打開nginx/conf/nginx.conf配置文件,對其中events的worker_connections、multi_accept、accept_mutex等參進行調優,如下所示

原配置

1
2
3
events {
     worker_connections  1024;
}

優化為

1
2
3
4
5
6
events {
     use epoll; #支持大量連接和非活動連接
     worker_connections 32768; 
     multi_accept on; #nginx在已經得到一個新連接的通知時,接收盡可能多的連接
     accept_mutex on; #防止驚群現象發生,默認為on
}

優化說明

1
使用epoll模式,將連接從現在的2048增加到32768,Epoll模式將提高並發連接到100K級別, 而且非活躍的連接(連接正常但沒有數據或死的連接對象)數量不影響活躍連接的性能。

2.2 upstream中使用keepalive,如下

1
2
3
4
5
upstream httpproxy{ 
     server 192.168.1.14:8080; 
     server 192.168.1.15:8080;
     keepalive 128; 
}

2.3 系統優化

1
2
3
4
5
6
7
8
9
10
11
12
[root@CsadfZ999739 nginx] # vi /etc/sysctl.conf 
net.ipv4.tcp_fin_timeout = 20
#net.ipv4.tcp_keepalive_time =300 # 5分鍾發個激活包,應對移動端, 現在不需要,因為有F5
fs. file -max = 163840  #增加文件數
net.ipv4.tcp_max_syn_backlog = 8192  #表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數。 
:wq 
[root@CsadfZ999739 nginx] #/sbin/sysctl 
 
#監控參數設置
ESTABLISHED: 連接數 2萬 
TIME_WAIT: 只監控nginx與后端服務器連接部分 5000 全部的端口>2萬
OTHERSTATE: 5000


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM