日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux內(nèi)核的配置簡介(linux內(nèi)核的配置)

Linux操作系統(tǒng)是一個開源的操作系統(tǒng),其內(nèi)核是由Linus Torvalds和一群志愿者共同開發(fā)和維護的。而linux內(nèi)核的配置則是為了滿足不同用戶的需求而設(shè)計的。在配置內(nèi)核時,用戶不僅可以選擇需要的功能,還可以對操作系統(tǒng)的性能、穩(wěn)定性和安全性進(jìn)行更加細(xì)致的控制。本文將對Linux內(nèi)核的配置進(jìn)行簡單介紹。

創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

一、Linux內(nèi)核的配置方式

Linux內(nèi)核的配置一般有兩種方式:一種是手動配置,另一種是使用內(nèi)核配置工具。手動配置需要用戶了解每一個選項的含義和作用,而內(nèi)核配置工具則可以根據(jù)用戶的需求自動選擇適合的選項。其中,內(nèi)核配置工具中最常用的是make menuconfig命令。執(zhí)行該命令后,用戶可以通過交互式的菜單選擇自己需要的選項,或者通過搜索功能查找自己需要的選項。

二、Linux內(nèi)核的配置選項

在Linux內(nèi)核的配置中,有一些選項是必選的,比如CPU架構(gòu)、文件系統(tǒng)支持、設(shè)備驅(qū)動支持等。同時,還有一些選項是可以根據(jù)用戶的需求來選擇的。比如,對于服務(wù)器用戶來說,他們可能會對內(nèi)存管理、網(wǎng)絡(luò)功能、文件系統(tǒng)等方面更加關(guān)注。而對于桌面用戶來說,他們可能更加關(guān)注圖形界面、硬件支持等。因此,在選擇內(nèi)核配置選項時,需要根據(jù)自己的具體情況來進(jìn)行選擇。

三、Linux內(nèi)核配置的實例

1. 內(nèi)存管理配置

內(nèi)存管理是Linux內(nèi)核中比較重要的一部分。在內(nèi)存管理中,用戶需要選擇一些與內(nèi)存相關(guān)的選項。比如,對于服務(wù)器用戶來說,他們可能更加關(guān)注大內(nèi)存支持和NUMA支持等,而對于桌面用戶來說,他們可能更加關(guān)注內(nèi)存壓縮和虛擬內(nèi)存等。此外,在內(nèi)存管理的配置中,用戶還可以選擇內(nèi)存鎖定的選項,以便讓Linux操作系統(tǒng)盡可能地使用物理內(nèi)存,從而提高系統(tǒng)的穩(wěn)定性。

2. 網(wǎng)絡(luò)功能配置

在網(wǎng)絡(luò)功能配置中,用戶需要選擇一些與網(wǎng)絡(luò)相關(guān)的選項。比如,對于服務(wù)器用戶來說,他們可能更加關(guān)注負(fù)載均衡和高可用性等,而對于桌面用戶來說,他們可能更加關(guān)注網(wǎng)絡(luò)驅(qū)動、網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)管理工具等。此外,在網(wǎng)絡(luò)功能配置中,用戶還可以選擇安裝或卸載某些網(wǎng)絡(luò)服務(wù),從而加強系統(tǒng)的安全性。

3. 文件系統(tǒng)支持配置

在文件系統(tǒng)支持配置中,用戶需要選擇一些與文件系統(tǒng)相關(guān)的選項。比如,對于服務(wù)器用戶來說,他們可能更加關(guān)注高速文件系統(tǒng)和網(wǎng)絡(luò)文件系統(tǒng)等,而對于桌面用戶來說,他們可能更加關(guān)注移動設(shè)備的支持和API文件系統(tǒng)的支持等。此外,在文件系統(tǒng)支持配置中,用戶還可以選擇是否開啟TRIM支持等,以便更好地管理硬盤。

四、

Linux內(nèi)核的配置是為了滿足不同用戶的需求而設(shè)計的。在配置內(nèi)核時,用戶需要根據(jù)自己的具體情況來進(jìn)行選擇。同時,在選擇內(nèi)核配置選項時,需要注意平衡系統(tǒng)的性能、穩(wěn)定性和安全性。希望本文可以為讀者們提供有關(guān)Linux內(nèi)核配置的簡要介紹。

相關(guān)問題拓展閱讀:

  • 一般優(yōu)化linux的內(nèi)核,需要優(yōu)化什么參數(shù)

一般優(yōu)化linux的內(nèi)核,需要優(yōu)化什么參數(shù)

Sysctl命令及l(fā)inux內(nèi)核參數(shù)調(diào)整

一、Sysctl命令用來配置與顯示在/proc/sys目錄中的內(nèi)核參數(shù).如果想使參數(shù)長期保存,可以通過編輯/etc/sysctl.conf文件來實現(xiàn)。

命令格式:

sysctl -w variable=value

sysctl -p (default /etc/sysctl.conf)

sysctl –a

常用參數(shù)的意義:

-w  臨時改變某個指定參數(shù)的值,如

# sysctl -w net.ipv4.ip_forward=1

-a  顯示所有的系統(tǒng)參數(shù)

-p從指定的文件加載系統(tǒng)參數(shù),默認(rèn)從/etc/sysctl.conf 文件中加載,如:

# echo 1 > /proc/sys/net/ipv4/ip_forward

# sysctl -w net.ipv4.ip_forward=1

以上兩種方法都可能立即開啟路由功能,但如果系統(tǒng)重啟,或執(zhí)行了

# service network restart

命令,所設(shè)置的值即會丟失,如果想永久保留配置,可以修改/etc/sysctl.conf文件,將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1

二、linux內(nèi)核參數(shù)調(diào)整:linux 內(nèi)核參數(shù)調(diào)整有兩種方式

方法一:修改/proc下內(nèi)核參數(shù)文件內(nèi)容,不能使用編輯器來修改內(nèi)核參數(shù)文件,理由是由于內(nèi)核隨時可能更改這些文件中的任意一個,另外,這些內(nèi)核參數(shù)文件都是虛擬文件,實際中不存在,因此不能使用編輯器進(jìn)行編輯,而是使用echo命令,然后從

命令行

將輸出重定向至 /proc 下所選定的文件中。如:將 timeout_timewait 參數(shù)設(shè)置為30秒:

# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

參數(shù)修改后立即生效,但是重啟系統(tǒng)后,該參數(shù)又恢復(fù)成默認(rèn)值。因此,想永久更改內(nèi)核參數(shù),需要修改/etc/sysctl.conf文件

方法二.修改/etc/sysctl.conf文件。檢查sysctl.conf文件,如果已經(jīng)包含需要修改的參數(shù),則修改該參數(shù)的值,如果沒有需要修改的參數(shù),在sysctl.conf文件中添加參數(shù)。如:

net.ipv4.tcp_fin_timeout=30

保存退出后,可以重啟機器使參數(shù)生效,如果想使參數(shù)馬上生效,也可以執(zhí)行如下命令:

# sysctl  -p

三、sysctl.conf 文件中參數(shù)設(shè)置及說明

proc/sys/net/core/wmem_max

更大socket寫buffer,可參考的優(yōu)化值:873200

/proc/sys/net/core/rmem_max

更大socket讀buffer,可參考的優(yōu)化值:873200

/proc/sys/net/ipv4/tcp_wmem

TCP寫buffer,可參考的優(yōu)化值:73200

/proc/sys/net/ipv4/tcp_rmem

TCP讀buffer,可參考的優(yōu)化值:873200

/proc/sys/net/ipv4/tcp_mem

同樣有3個值,意思是:

net.ipv4.tcp_mem:低于此值,TCP沒有內(nèi)存壓力.

net.ipv4.tcp_mem:在此值下,進(jìn)入內(nèi)存壓力階段.

net.ipv4.tcp_mem:高于此值,TCP拒絕分配socket.

上述內(nèi)存單位是頁,而不是字節(jié).可參考的優(yōu)化值是:

/proc/sys/net/core/netdev_max_backlog

進(jìn)入包的更大設(shè)備隊列.默認(rèn)是300,對重負(fù)載服務(wù)器而言,該值太低,可調(diào)整到1000

/proc/sys/net/core/somaxconn

listen()的默認(rèn)參數(shù),掛起請求的更大數(shù)量.默認(rèn)是128.對繁忙的服務(wù)器,增加該值有助于網(wǎng)絡(luò)性能.可調(diào)整到256.

/proc/sys/net/core/optmem_max

socket buffer的更大初始化值,默認(rèn)10K

/proc/sys/net/ipv4/tcp_max_syn_backlog

進(jìn)入SYN包的更大請求隊列.默認(rèn)1024.對重負(fù)載服務(wù)器,可調(diào)整到2023

/proc/sys/net/ipv4/tcp_retries2

TCP失敗重傳次數(shù),默認(rèn)值15,意味著重傳15次才徹底放棄.可減少到5,盡早釋放內(nèi)核資源.

/proc/sys/net/ipv4/tcp_keepalive_time

/proc/sys/net/ipv4/tcp_keepalive_intvl

/proc/sys/net/ipv4/tcp_keepalive_probes

這3個參數(shù)與TCP KeepAlive有關(guān).默認(rèn)值是:

tcp_keepalive_time = 7200 seconds (2 hours)

tcp_keepalive_probes = 9

tcp_keepalive_intvl = 75 seconds

意思是如果某個TCP連接在idle 2個小時后,內(nèi)核才發(fā)起probe.如果probe 9次(每次75秒)不成功,內(nèi)核才徹底放棄,認(rèn)為該連接已失效.對服務(wù)器而言,顯然上述值太大. 可調(diào)整到:

/proc/sys/net/ipv4/tcp_keepalive_time 1800

/proc/sys/net/ipv4/tcp_keepalive_intvl 30

/proc/sys/net/ipv4/tcp_keepalive_probes 3

/proc/sys/net/ipv4/ip_local_port_range

指定端口范圍的一個配置,默認(rèn)是,已夠大.

net.ipv4.tcp_syncookies = 1

表示開啟SYN Cookies。當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉;

net.ipv4.tcp_tw_reuse = 1

表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;

net.ipv4.tcp_tw_recycle = 1

表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0,表示關(guān)閉。

net.ipv4.tcp_fin_timeout = 30

表示如果

套接字

由本端要求關(guān)閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間。

net.ipv4.tcp_keepalive_time = 1200

表示當(dāng)keepalive起用的時候,TCP發(fā)送keepalive消息的頻度。缺省是2小時,改為20分鐘。

net.ipv4.ip_local_port_range =

表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192

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

net.ipv4.tcp_max_tw_buckets = 5000

表示系統(tǒng)同時保持TIME_WAIT套接字的更大數(shù)量,如果超過這個數(shù)字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認(rèn)為,改為 5000。對于Apache、Nginx等服務(wù)器,上幾行的參數(shù)可以很好地減少TIME_WAIT套接字?jǐn)?shù)量,但是對于Squid,效果卻不大。此項參數(shù)可以控制TIME_WAIT套接字的更大數(shù)量,避免Squid服務(wù)器被大量的TIME_WAIT套接字拖死。

Linux上的NAT與iptables

談起Linux上的NAT,大多數(shù)人會跟你提到iptables。原因是因為iptables是目前在linux上實現(xiàn)NAT的一個非常好的接口。它通過和內(nèi)核級直接操作網(wǎng)絡(luò)包,效率和穩(wěn)定性都非常高。這里簡單列舉一些NAT相關(guān)的iptables實例命令,可能對于大多數(shù)實現(xiàn)有多幫助。

這里說明一下,為了節(jié)省篇幅,這里把準(zhǔn)備工作的命令略去了,僅僅列出核心步驟命令,所以如果你單單執(zhí)行這些沒有實現(xiàn)功能的話,很可能由于準(zhǔn)備工作沒有做好。如果你對整個命令細(xì)節(jié)感興趣的話,可以直接訪問我的《如何讓你的Linux網(wǎng)關(guān)更強大》系列文章,其中對于各個腳本有詳細(xì)的說明和描述。

# 案例1:實現(xiàn)網(wǎng)關(guān)的MASQUERADE

# 具體功能:內(nèi)網(wǎng)網(wǎng)卡是eth1,

外網(wǎng)

eth0,使得內(nèi)網(wǎng)指定本服務(wù)做網(wǎng)關(guān)可以訪問外網(wǎng)

EXTERNAL=”eth0″

INTERNAL=”eth1″

# 這一步開啟ip轉(zhuǎn)發(fā)支持,這是NAT實現(xiàn)的前提

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE

# 案例2:實現(xiàn)網(wǎng)關(guān)的簡單端口映射

# 具體功能:實現(xiàn)外網(wǎng)通過訪問網(wǎng)關(guān)的外部ip:80,可以直接達(dá)到訪問私有網(wǎng)絡(luò)內(nèi)的一臺主機192.168.1.10:80效果

LOCAL_EX_IP=11.22.33.44 #設(shè)定網(wǎng)關(guān)的外網(wǎng)卡ip,對于多ip情況,參考《如何讓你的Linux網(wǎng)關(guān)更強大》系列文章

LOCAL_IN_IP=192.168.1.1  #設(shè)定網(wǎng)關(guān)的內(nèi)網(wǎng)卡ip

INTERNAL=”eth1″ #設(shè)定內(nèi)網(wǎng)卡

# 這一步開啟ip轉(zhuǎn)發(fā)支持,這是NAT實現(xiàn)的前提

echo 1 > /proc/sys/net/ipv4/ip_forward

# 加載需要的ip模塊,下面兩個是ftp相關(guān)的模塊,如果有其他特殊需求,也需要加進(jìn)來

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

# 這一步實現(xiàn)目標(biāo)地址指向網(wǎng)關(guān)外部ip:80的訪問都吧目標(biāo)地址改成192.168.1.10:80

iptables -t nat -A PREROUTING -d $LOCAL_EX_IP -p tcp –dport 80 -j DNAT –to 192.168.1.10

# 這一步實現(xiàn)把目標(biāo)地址指向192.168.1.10:80的

數(shù)據(jù)包

的源地址改成網(wǎng)關(guān)自己的本地ip,這里是192.168.1.1

iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp –dport 80 -j SNAT –to $LOCAL_IN_IP

# 在FORWARD鏈上添加到192.168.1.10:80的允許,否則不能實現(xiàn)轉(zhuǎn)發(fā)

iptables -A FORWARD -o $INTERNAL -d 192.168.1.10 -p tcp –dport 80 -j ACCEPT

# 通過上面重要的三句話之后,實現(xiàn)的效果是,通過網(wǎng)關(guān)的外網(wǎng)ip:80訪問,全部轉(zhuǎn)發(fā)到內(nèi)網(wǎng)的192.168.1.10:

80端口

,實現(xiàn)典型的端口映射

# 特別注意,所有被轉(zhuǎn)發(fā)過的數(shù)據(jù)都是源地址是網(wǎng)關(guān)

內(nèi)網(wǎng)ip

的數(shù)據(jù)包,所以192.168.1.10上看到的所有訪問都好像是網(wǎng)關(guān)發(fā)過來的一樣,而看不到外部ip

# 一個重要的思想:數(shù)據(jù)包根據(jù)“從哪里來,回哪里去”的策略來走,所以不必?fù)?dān)心回頭數(shù)據(jù)的問題

# 現(xiàn)在還有一個問題,網(wǎng)關(guān)自己訪問自己的外網(wǎng)ip:80,是不會被NAT到192.168.1.10的,這不是一個嚴(yán)重的問題,但讓人很不爽,解決的方法如下:

iptables -t nat -A OUTPUT -d $LOCAL_EX_IP -p tcp –dport 80 -j DNAT –to 192.168.1.10

獲取系統(tǒng)中的NAT信息和診斷錯誤

了解/proc目錄的意義

在Linux系統(tǒng)中,/proc是一個特殊的目錄,proc

文件系統(tǒng)

是一個偽文件系統(tǒng),它只存在內(nèi)存當(dāng)中,而不占用

外存

空間。它包含當(dāng)前系統(tǒng)的一些參數(shù)(variables)和狀態(tài)(status)情況。它以文件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口

通過/proc可以了解到系統(tǒng)當(dāng)前的一些重要信息,包括磁盤使用情況,內(nèi)存使用狀況,硬件信息,網(wǎng)絡(luò)使用情況等等,很多系統(tǒng)監(jiān)控工具(如HotSaNIC)都通過/proc目錄獲取系統(tǒng)數(shù)據(jù)。

另一方面通過直接操作/proc中的參數(shù)可以實現(xiàn)系統(tǒng)內(nèi)核參數(shù)的調(diào)節(jié),比如是否允許ip轉(zhuǎn)發(fā),syn-cookie是否打開,tcp超時時間等。

獲得參數(shù)的方式:

之一種:cat /proc/xxx/xxx,如 cat /proc/sys/net/ipv4/conf/all/rp_filter

第二種:sysctl sysctl net.ipv4.conf.all.rp_filter

改變參數(shù)的方式:

之一種:echo value > /proc/xxx/xxx,如 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

第二種:sysctl variable=value,如 sysctl net.ipv4.conf.all.rp_filter=1

以上設(shè)定系統(tǒng)參數(shù)的方式只對當(dāng)前系統(tǒng)有效,重起系統(tǒng)就沒了,想要保存下來,需要寫入/etc/sysctl.conf文件中

通過執(zhí)行 man 5 proc可以獲得一些關(guān)于proc目錄的介紹

查看系統(tǒng)中的NAT情況

和NAT相關(guān)的系統(tǒng)變量

/proc/slabinfo:內(nèi)核緩存使用情況統(tǒng)計信息(Kernel slab allocator statistics)

/proc/sys/net/ipv4/ip_conntrack_max:系統(tǒng)支持的更大ipv4連接數(shù),默認(rèn)65536(事實上這也是理論更大值)

/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 已建立的tcp連接的超時時間,默認(rèn)432023,也就是5天

和NAT相關(guān)的狀態(tài)值

/proc/net/ip_conntrack:當(dāng)前的前被跟蹤的連接狀況,nat翻譯表就在這里體現(xiàn)(對于一個網(wǎng)關(guān)為主要功能的Linux主機,里面大部分信息是NAT翻譯表)

/proc/sys/net/ipv4/ip_local_port_range:本地開放端口范圍,這個范圍同樣會間接限制NAT表規(guī)模

# 1. 查看當(dāng)前系統(tǒng)支持的更大連接數(shù)

cat /proc/sys/net/ipv4/ip_conntrack_max

# 值:默認(rèn)65536,同時這個值和你的內(nèi)存大小有關(guān),如果內(nèi)存128M,這個值更大8192,1G以上內(nèi)存這個值都是默認(rèn)65536

# 影響:這個值決定了你作為NAT網(wǎng)關(guān)的工作能力上限,所有局域網(wǎng)內(nèi)通過這臺網(wǎng)關(guān)對外的連接都將占用一個連接,如果這個值太低,將會影響吞吐量

# 2. 查看tcp連接超時時間

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

# 值:默認(rèn)432023(秒),也就是5天

# 影響:這個值過大將導(dǎo)致一些可能已經(jīng)不用的連接常駐于內(nèi)存中,占用大量鏈接資源,從而可能導(dǎo)致NAT ip_conntrack: table full的問題

# 建議:對于NAT負(fù)載相對本機的 NAT表大小很緊張的時候,可能需要考慮縮小這個值,以盡早清除連接,保證有可用的連接資源;如果不緊張,不必修改

# 3. 查看NAT表使用情況(判斷NAT表資源是否緊張)

# 執(zhí)行下面的命令可以查看你的網(wǎng)關(guān)中NAT表情況

cat /proc/net/ip_conntrack

# 4. 查看本地開放端口的范圍

cat /proc/sys/net/ipv4/ip_local_port_range

# 返回兩個值,最小值和更大值

# 下面的命令幫你明確一下NAT表的規(guī)模

wc -l /proc/net/ip_conntrack

#或者

grep ip_conntrack /proc/slabinfo | grep -v expect | awk ‘{print $1 ‘,’ $2;}’

# 下面的命令幫你明確可用的NAT表項,如果這個值比較大,那就說明NAT表資源不緊張

grep ip_conntrack /proc/slabinfo | grep -v expect | awk ‘{print $1 ‘,’ $3;}’

# 下面的命令幫你統(tǒng)計NAT表中占用端口最多的幾個ip,很有可能這些家伙再做一些bt的事情,嗯bt的事情:-)

cat /proc/net/ip_conntrack | cut -d ‘ ‘ -f 10 | cut -d ‘=’ -f 2 | sort | uniq -c | sort -nr | head -n 10

# 上面這個命令有點瑕疵cut -d’ ‘ -f10會因為命令輸出有些行缺項而造成統(tǒng)計偏差,下面給出一個正確的寫法:

cat /proc/net/ip_conntrack | perl -pe s/^\(.*?\)src/src/g | cut -d ‘ ‘ -f1 | cut -d ‘=’ -f2 | sort | uniq -c | sort -nr | head -n 10

作為高性能WEB服務(wù)器,只調(diào)整Nginx本身的參數(shù)是不行的,因為Nginx服務(wù)依賴于高性能的操作系統(tǒng)。

以下為常見的幾個Linux內(nèi)核參數(shù)優(yōu)化方法。

net.ipv4.tcp_max_tw_buckets

對于tcp連接,服務(wù)端和客戶端通信完后狀態(tài)變?yōu)閠imewait,假如某臺服務(wù)器非常忙,連接數(shù)特別多的話,那么這個timewait數(shù)量就會越來越大。

畢竟它也是會占用一定的資源,所以應(yīng)該有一個更大值,當(dāng)超過這個值,系統(tǒng)就會刪除最早的連接,這樣始終保持在一個數(shù)量級。

這個數(shù)值就是由net.ipv4.tcp_max_tw_buckets這個參數(shù)來決定的。

CentOS7系統(tǒng),你可以使用sysctl -a |grep tw_buckets來查看它的值,默認(rèn)為32768,

你可以適當(dāng)把它調(diào)低,比如調(diào)整到8000,畢竟這個狀態(tài)的連接太多也是會消耗資源的。

但你不要把它調(diào)到幾十、幾百這樣,因為這種狀態(tài)的tcp連接也是有用的,

如果同樣的客戶端再次和服務(wù)端通信,就不用再次建立新的連接了,用這個舊的通道,省時省力。

net.ipv4.tcp_tw_recycle = 1

該參數(shù)的作用是快速回收timewait狀態(tài)的連接。上面雖然提到系統(tǒng)會自動刪除掉timewait狀態(tài)的連接,但如果把這樣的連接重新利用起來豈不是更好。

所以該參數(shù)設(shè)置為1就可以讓timewait狀態(tài)的連接快速回收,它需要和下面的參數(shù)配合一起使用。

net.ipv4.tcp_tw_reuse = 1

該參數(shù)設(shè)置為1,將timewait狀態(tài)的連接重新用于新的TCP連接,要結(jié)合上面的參數(shù)一起使用。

net.ipv4.tcp_syncookies = 1

tcp三次握手中,客戶端向服務(wù)端發(fā)起syn請求,服務(wù)端收到后,也會向客戶端發(fā)起syn請求同時連帶ack確認(rèn),

假如客戶端發(fā)送請求后直接斷開和服務(wù)端的連接,不接收服務(wù)端發(fā)起的這個請求,服務(wù)端會重試多次,

這個重試的過程會持續(xù)一段時間(通常高于30s),當(dāng)這種狀態(tài)的連接數(shù)量非常大時,服務(wù)器會消耗很大的資源,從而造成癱瘓,

正常的連接進(jìn)不來,這種惡意的半連接行為其實叫做syn flood攻擊。

設(shè)置為1,是開啟SYN Cookies,開啟后可以避免發(fā)生上述的syn flood攻擊。

開啟該參數(shù)后,服務(wù)端接收客戶端的ack后,再向客戶端發(fā)送ack+syn之前會要求client在短時間內(nèi)回應(yīng)一個序號,

如果客戶端不能提供序號或者提供的序號不對則認(rèn)為該客戶端不合法,于是不會發(fā)ack+syn給客戶端,更涉及不到重試。

net.ipv4.tcp_max_syn_backlog

該參數(shù)定義系統(tǒng)能接受的更大半連接狀態(tài)的tcp連接數(shù)??蛻舳讼蚍?wù)端發(fā)送了syn包,服務(wù)端收到后,會記錄一下,

該參數(shù)決定最多能記錄幾個這樣的連接。在CentOS7,默認(rèn)是256,當(dāng)有syn flood攻擊時,這個數(shù)值太小則很容易導(dǎo)致服務(wù)器癱瘓,

實際上此時服務(wù)器并沒有消耗太多資源(cpu、內(nèi)存等),所以可以適當(dāng)調(diào)大它,比如調(diào)整到30000。

net.ipv4.tcp_syn_retries

該參數(shù)適用于客戶端,它定義發(fā)起syn的更大重試次數(shù),默認(rèn)為6,建議改為2。

net.ipv4.tcp_synack_retries

該參數(shù)適用于服務(wù)端,它定義發(fā)起syn+ack的更大重試次數(shù),默認(rèn)為5,建議改為2,可以適當(dāng)預(yù)防syn flood攻擊。

net.ipv4.ip_local_port_range

該參數(shù)定義端口范圍,系統(tǒng)默認(rèn)保留端口為1024及以下,以上部分為自定義端口。這個參數(shù)適用于客戶端,

當(dāng)客戶端和服務(wù)端建立連接時,比如說訪問服務(wù)端的80端口,客戶端隨機開啟了一個端口和服務(wù)端發(fā)起連接,

這個參數(shù)定義隨機端口的范圍。默認(rèn)為,建議調(diào)整為。

net.ipv4.tcp_fin_timeout

tcp連接的狀態(tài)中,客戶端上有一個是FIN-WAIT-2狀態(tài),它是狀態(tài)變遷為timewait前一個狀態(tài)。

該參數(shù)定義不屬于任何進(jìn)程的該連接狀態(tài)的超時時間,默認(rèn)值為60,建議調(diào)整為6。

net.ipv4.tcp_keepalive_time

tcp連接狀態(tài)里,有一個是established狀態(tài),只有在這個狀態(tài)下,客戶端和服務(wù)端才能通信。正常情況下,當(dāng)通信完畢,

客戶端或服務(wù)端會告訴對方要關(guān)閉連接,此時狀態(tài)就會變?yōu)閠imewait,如果客戶端沒有告訴服務(wù)端,

并且服務(wù)端也沒有告訴客戶端關(guān)閉的話(例如,客戶端那邊斷網(wǎng)了),此時需要該參數(shù)來判定。

比如客戶端已經(jīng)斷網(wǎng)了,但服務(wù)端上本次連接的狀態(tài)依然是established,服務(wù)端為了確認(rèn)客戶端是否斷網(wǎng),

就需要每隔一段時間去發(fā)一個探測包去確認(rèn)一下看看對方是否在線。這個時間就由該參數(shù)決定。它的默認(rèn)值為7200秒,建議設(shè)置為30秒。

net.ipv4.tcp_keepalive_intvl

該參數(shù)和上面的參數(shù)是一起的,服務(wù)端在規(guī)定時間內(nèi)發(fā)起了探測,查看客戶端是否在線,如果客戶端并沒有確認(rèn),

此時服務(wù)端還不能認(rèn)定為對方不在線,而是要嘗試多次。該參數(shù)定義重新發(fā)送探測的時間,即之一次發(fā)現(xiàn)對方有問題后,過多久再次發(fā)起探測。

默認(rèn)值為75秒,可以改為3秒。

net.ipv4.tcp_keepalive_probes

第10和第11個參數(shù)規(guī)定了何時發(fā)起探測和探測失敗后再過多久再發(fā)起探測,但并沒有定義一共探測幾次才算結(jié)束。

該參數(shù)定義發(fā)起探測的包的數(shù)量。默認(rèn)為9,建議設(shè)置2。

設(shè)置和范例

在Linux下調(diào)整內(nèi)核參數(shù),可以直接編輯配置文件/etc/sysctl.conf,然后執(zhí)行sysctl -p命令生效

方法只對擁有大量TIME_WAIT狀態(tài)的連接導(dǎo)致系統(tǒng)資源消耗有效,如果不是這種情況下,效果可能不明顯??梢允褂?/p>

netstat命令

去查TIME_WAIT狀態(tài)的連接狀態(tài),輸入下面的組合命令,查看當(dāng)前TCP連接的狀態(tài)和對應(yīng)的連接數(shù)量:

#netstat -n | awk ‘/^tcp/ {++S} END {for(a in S) print a, S}’

這個命令會輸出類似下面的結(jié)果:

LAST_ACK 16

SYN_RECV 348

ESTABLISHED 70

FIN_WAIT1 229

FIN_WAIT2 30

CLOSING 33

TIME_WAIT 18098

我們只用關(guān)心TIME_WAIT的個數(shù),在這里可以看到,有18000多個TIME_WAIT,這樣就占用了18000多個端口。要知道端口的數(shù)量只有65535個,占用一個少一個,會嚴(yán)重的影響到后繼的新連接。這種情況下,我們就有必要調(diào)整下Linux的TCP內(nèi)核參數(shù),讓系統(tǒng)更快的釋放TIME_WAIT連接。

用vim打開

配置文件

:#vim /etc/sysctl.conf

在這個文件中,加入下面的幾行內(nèi)容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

輸入下面的命令,讓內(nèi)核參數(shù)生效:#sysctl -p

簡單的說明上面的參數(shù)的含義:

net.ipv4.tcp_syncookies = 1

#表示開啟SYN Cookies。當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉;

net.ipv4.tcp_tw_reuse = 1

#表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;

net.ipv4.tcp_tw_recycle = 1

#表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0,表示關(guān)閉;

net.ipv4.tcp_fin_timeout

#修改系統(tǒng)默認(rèn)的 TIMEOUT 時間。

在經(jīng)過這樣的調(diào)整之后,除了會進(jìn)一步提升服務(wù)器的負(fù)載能力之外,還能夠防御小流量程度的DoS、CC和SYN攻擊。

此外,如果你的連接數(shù)本身就很多,我們可以再優(yōu)化一下TCP的可使用端口范圍,進(jìn)一步提升服務(wù)器的并發(fā)能力。依然是往上面的參數(shù)文件中,加入下面這些配置:

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.ip_local_port_range =

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

#這幾個參數(shù),建議只在流量非常大的服務(wù)器上開啟,會有顯著的效果。一般的流量小的服務(wù)器上,沒有必要去設(shè)置這幾個參數(shù)。

net.ipv4.tcp_keepalive_time = 1200

#表示當(dāng)keepalive起用的時候,TCP發(fā)送keepalive消息的頻度。缺省是2小時,改為20分鐘。

net.ipv4.ip_local_port_range =

#表示用于向外連接的端口范圍。缺省情況下很?。?2768到61000,改為10000到65000。(注意:這里不要將更低值設(shè)的太低,否則可能會占用掉正常的端口?。?/p>

net.ipv4.tcp_max_syn_backlog = 8192

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

net.ipv4.tcp_max_tw_buckets = 6000

#表示系統(tǒng)同時保持TIME_WAIT的更大數(shù)量,如果超過這個數(shù)字,TIME_WAIT將立刻被清除并打印警告信息。默 認(rèn)為180000,改為6000。對于Apache、Nginx等服務(wù)器,上幾行的參數(shù)可以很好地減少TIME_WAIT

套接字

數(shù)量,但是對于Squid,效果卻不大。此項參數(shù)可以控制TIME_WAIT的更大數(shù)量,避免Squid服務(wù)器被大量的TIME_WAIT拖死。

內(nèi)核其他TCP參數(shù)說明:

net.ipv4.tcp_max_syn_backlog = 65536

#記錄的那些尚未收到客戶端確認(rèn)信息的連接請求的更大值。對于有128M內(nèi)存的系統(tǒng)而言,缺省值是1024,小內(nèi)存的系統(tǒng)則是128。

net.core.netdev_max_backlog = 32768

#每個網(wǎng)絡(luò)接口接收

數(shù)據(jù)包

的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的更大數(shù)目。

net.core.somaxconn = 32768

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

net.core.wmem_default =

net.core.rmem_default =

net.core.rmem_max = #更大socket讀buffer,可參考的優(yōu)化值:873200

net.core.wmem_max = #更大socket寫buffer,可參考的優(yōu)化值:873200

net.ipv4.tcp_timestps = 0

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

net.ipv4.tcp_synack_retries = 2

#為了打開對端的連接,內(nèi)核需要發(fā)送一個SYN并附帶一個回應(yīng)前面一個SYN的ACK。也就是所謂

三次握手

中的第二次握手。這個設(shè)置決定了內(nèi)核放棄連接之前發(fā)送SYN+ACK包的數(shù)量。

net.ipv4.tcp_syn_retries = 2

#在內(nèi)核放棄建立連接之前發(fā)送SYN包的數(shù)量。

#net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_tw_reuse = 1

# 開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接。

net.ipv4.tcp_wmem =73200

# TCP寫buffer,可參考的優(yōu)化值:73200

net.ipv4.tcp_rmem =873200

# TCP讀buffer,可參考的優(yōu)化值:873200

net.ipv4.tcp_mem =

# 同樣有3個值,意思是:

net.ipv4.tcp_mem:低于此值,TCP沒有內(nèi)存壓力。

net.ipv4.tcp_mem:在此值下,進(jìn)入內(nèi)存壓力階段。

net.ipv4.tcp_mem:高于此值,TCP拒絕分配socket。

上述內(nèi)存單位是頁,而不是字節(jié)。可參考的優(yōu)化值是:

net.ipv4.tcp_max_orphans =

#系統(tǒng)中最多有多少個TCP套接字不被關(guān)聯(lián)到任何一個用戶文件句柄上。

如果超過這個數(shù)字,連接將即刻被復(fù)位并打印出警告信息。

這個限制僅僅是為了防止簡單的DoS攻擊,不能過分依靠它或者人為地減小這個值,

更應(yīng)該增加這個值(如果增加了內(nèi)存之后)。

net.ipv4.tcp_fin_timeout = 30

#如果套接字由本端要求關(guān)閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間。對端可以出錯并永遠(yuǎn)不關(guān)閉連接,甚至意外

當(dāng)機

。缺省值是60秒。2.2 內(nèi)核的通常值是180秒,你可以按這個設(shè)置,但要記住的是,即使你的機器是一個輕載的

WEB服務(wù)器

,也有因為大量的死套接字而

內(nèi)存溢出

的風(fēng)險,F(xiàn)IN- WAIT-2的危險性比FIN-WAIT-1要小,因為它最多只能吃掉1.5K內(nèi)存,但是它們的生存期長些。

linux內(nèi)核的配置的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux內(nèi)核的配置,Linux內(nèi)核的配置簡介,一般優(yōu)化linux的內(nèi)核,需要優(yōu)化什么參數(shù)的信息別忘了在本站進(jìn)行查找喔。

創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(biāo)準(zhǔn)機房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機柜接入千兆交換機,能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。


新聞名稱:Linux內(nèi)核的配置簡介(linux內(nèi)核的配置)
URL標(biāo)題:http://www.dlmjj.cn/article/coshhoe.html