由于默認的linux內(nèi)核參數(shù)考慮的是最通用場景,這明顯不符合用于支持高并發(fā)訪問的Web服務(wù)器的定義,所以需要修改Linux內(nèi)核參數(shù),是的Nginx可以擁有更高的性能;
目前成都創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、陸川網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。在優(yōu)化內(nèi)核時,可以做的事情很多,不過,我們通常會根據(jù)業(yè)務(wù)特點來進行調(diào)整,當Nginx作為靜態(tài)web內(nèi)容服務(wù)器、反向代理或者提供壓縮服務(wù)器的服務(wù)器時,期內(nèi)核參數(shù)的調(diào)整都是不同的,這里針對最通用的、使Nginx支持更多并發(fā)請求的TCP網(wǎng)絡(luò)參數(shù)做簡單的配置;
以下linux 系統(tǒng)內(nèi)核優(yōu)化配置均經(jīng)在線業(yè)務(wù)系統(tǒng)測試,并發(fā)10萬左右服務(wù)器運行狀態(tài)良好,用了一些時間整理,現(xiàn)和大家分享一下,如有那位高人看到配置上有問題,請給與指出!
# 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 #表示用于向外連接的端口范圍。缺省情況下很?。?2768到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
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。