溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

高并發(fā)nginx服務(wù)器的linux內(nèi)核如何優(yōu)化

發(fā)布時間:2022-05-21 11:10:21 來源:億速云 閱讀:130 作者:zzz 欄目:大數(shù)據(jù)

這篇“高并發(fā)nginx服務(wù)器的linux內(nèi)核如何優(yōu)化”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“高并發(fā)nginx服務(wù)器的linux內(nèi)核如何優(yōu)化”文章吧。

代碼如下:

# controls the use of tcp syncookies

#表示開啟重用。允許將time-wait sockets重新用于新的tcp連接,默認為0,表示關(guān)閉;
net.ipv4.tcp_syncookies = 1

#一個布爾類型的標志,控制著當有很多的連接請求時內(nèi)核的行為。啟用的話,如果服務(wù)超載,內(nèi)核將主動地發(fā)送rst包。
net.ipv4.tcp_abort_on_overflow = 1

#表示系統(tǒng)同時保持time_wait的最大數(shù)量,如果超過這個數(shù)字,time_wait將立刻被清除并打印警告信息。
#默認為180000,改為6000。對于apache、nginx等服務(wù)器,此項參數(shù)可以控制time_wait的最大數(shù)量,服務(wù)器被大量的time_wait拖死
net.ipv4.tcp_max_tw_buckets = 6000

#有選擇的應(yīng)答
net.ipv4.tcp_sack = 1

#該文件表示設(shè)置tcp/ip會話的滑動窗口大小是否可變。參數(shù)值為布爾值,為1時表示可變,為0時表示不可變。tcp/ip通常使用的窗口最大可達到65535 字節(jié),對于高速網(wǎng)絡(luò).
#該值可能太小,這時候如果啟用了該功能,可以使tcp/ip滑動窗口大小增大數(shù)個數(shù)量級,從而提高數(shù)據(jù)傳輸?shù)哪芰Α?
net.ipv4.tcp_window_scaling = 1

#tcp接收緩沖區(qū)
net.ipv4.tcp_rmem = 4096    87380  4194304

#tcp發(fā)送緩沖區(qū)
net.ipv4.tcp_wmem = 4096    66384  4194304

# # out of socket memory
net.ipv4.tcp_mem = 94500000 915000000 927000000

#該文件表示每個套接字所允許的最大緩沖區(qū)的大小。
net.core.optmem_max = 81920

#該文件指定了發(fā)送套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.wmem_default = 8388608

#指定了發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
net.core.wmem_max = 16777216

#指定了接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.rmem_default = 8388608

#指定了接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
net.core.rmem_max = 16777216

#表示syn隊列的長度,默認為1024,加大隊列長度為10200000,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。

net.ipv4.tcp_max_syn_backlog = 1020000

#每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
net.core.netdev_max_backlog = 862144

#web 應(yīng)用中l(wèi)isten 函數(shù)的backlog 默認會給我們內(nèi)核參數(shù)的net.core.somaxconn 限制到128,而nginx 定義的ngx_listen_backlog 默認為511,所以有必要調(diào)整這個值。
net.core.somaxconn = 262144

#系統(tǒng)中最多有多少個tcp 套接字不被關(guān)聯(lián)到任何一個用戶文件句柄上。如果超過這個數(shù)字,孤兒連接將即刻被復(fù)位并打印出警告信息。


#這個限制僅僅是為了防止簡單的dos 攻擊,不能過分依靠它或者人為地減小這個值,更應(yīng)該增加這個
net.ipv4.tcp_max_orphans = 327680

#時間戳可以避免序列號的卷繞。一個1gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內(nèi)核接受這種“異?!钡臄?shù)據(jù)包。這里需要將其關(guān)掉。
net.ipv4.tcp_timestamps = 0

#為了打開對端的連接,內(nèi)核需要發(fā)送一個syn 并附帶一個回應(yīng)前面一個syn 的ack。也就是所謂三次握手中的第二次握手。這個設(shè)置決定了內(nèi)核放棄連接之前發(fā)送syn+ack 包的數(shù)量。
net.ipv4.tcp_synack_retries = 1

#在內(nèi)核放棄建立連接之前發(fā)送syn 包的數(shù)量。www.jb51.net
net.ipv4.tcp_syn_retries = 1

#表示開啟tcp連接中time-wait sockets的快速回收,默認為0,表示關(guān)閉;
net.ipv4.tcp_tw_recycle = 1

#表示開啟重用。允許將time-wait sockets重新用于新的tcp連接,默認為0,表示關(guān)閉;
net.ipv4.tcp_tw_reuse = 1

#修改系統(tǒng)默認的 timeout 時間。
net.ipv4.tcp_fin_timeout = 15

#表示當keepalive起用的時候,tcp發(fā)送keepalive消息的頻度。缺省是2小時,建議改為20分鐘。
net.ipv4.tcp_keepalive_time = 30

#表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為10000到65000。(注意:這里不要將最低值設(shè)的太低,否則可能會占用掉正常的端口?。?
net.ipv4.ip_local_port_range = 1024  65000

#以下可能需要加載ip_conntrack模塊 modprobe ip_conntrack ,有文檔說防火墻開啟情況下此模塊失效

#縮短established的超時時間
net.netfilter.nf_conntrack_tcp_timeout_established = 180

#conntrack_max 允許的最大跟蹤連接條目,是在內(nèi)核內(nèi)存中netfilter可以同時處理的“任務(wù)”(連接跟蹤條目)
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576

以上就是關(guān)于“高并發(fā)nginx服務(wù)器的linux內(nèi)核如何優(yōu)化”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI