關於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
|