怎么進(jìn)行l(wèi)inux內(nèi)核參數(shù)優(yōu)化-創(chuàng)新互聯(lián)

怎么進(jìn)行l(wèi)inux內(nèi)核參數(shù)優(yōu)化,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

寧晉網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),寧晉網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為寧晉超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的寧晉做網(wǎng)站的公司定做!

linux 內(nèi)核參數(shù)優(yōu)化 (2011-08-12 19:21) 分類: Linux SA+

Sysctl命令及l(fā)inux內(nèi)核參數(shù)調(diào)整   一、Sysctl命令用來配置與顯示在/proc/sys目錄中的內(nèi)核參數(shù).如果想使參數(shù)長(zhǎng)期保存,可以通過編輯/etc/sysctl.conf文件來實(shí)現(xiàn)。    命令格式:  sysctl [-n] [-e] -w variable=value  sysctl [-n] [-e] -p (default /etc/sysctl.conf)  sysctl [-n] [-e] –a   常用參數(shù)的意義:  -w  臨時(shí)改變某個(gè)指定參數(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è)置的值即會(huì)丟失,如果想永久保留配置,可以修改/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)核隨時(shí)可能更改這些文件中的任意一個(gè),另外,這些內(nèi)核參數(shù)文件都是虛擬文件,實(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 保存退出后,可以重啟機(jī)器使參數(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)化值: 8192 436600 873200   /proc/sys/net/ipv4/tcp_rmem  TCP讀buffer,可參考的優(yōu)化值: 32768 436600 873200   /proc/sys/net/ipv4/tcp_mem  同樣有3個(gè)值,意思是:  net.ipv4.tcp_mem[0]:低于此值,TCP沒有內(nèi)存壓力.  net.ipv4.tcp_mem[1]:在此值下,進(jìn)入內(nèi)存壓力階段.  net.ipv4.tcp_mem[2]:高于此值,TCP拒絕分配socket.  上述內(nèi)存單位是頁,而不是字節(jié).可參考的優(yōu)化值是:786432 1048576 1572864   /proc/sys/net/core/netdev_max_backlog  進(jìn)入包的較大設(shè)備隊(duì)列.默認(rèn)是300,對(duì)重負(fù)載服務(wù)器而言,該值太低,可調(diào)整到1000   /proc/sys/net/core/somaxconn  listen()的默認(rèn)參數(shù),掛起請(qǐng)求的較大數(shù)量.默認(rèn)是128.對(duì)繁忙的服務(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包的較大請(qǐng)求隊(duì)列.默認(rèn)1024.對(duì)重負(fù)載服務(wù)器,可調(diào)整到2048   /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個(gè)參數(shù)與TCP KeepAlive有關(guān).默認(rèn)值是:  tcp_keepalive_time = 7200 seconds (2 hours)  tcp_keepalive_probes = 9  tcp_keepalive_intvl = 75 seconds  意思是如果某個(gè)TCP連接在idle 2個(gè)小時(shí)后,內(nèi)核才發(fā)起probe.如果probe 9次(每次75秒)不成功,內(nèi)核才徹底放棄,認(rèn)為該連接已失效.對(duì)服務(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  指定端口范圍的一個(gè)配置,默認(rèn)是32768 61000,已夠大. net.ipv4.tcp_syncookies = 1  表示開啟SYN Cookies。當(dāng)出現(xiàn)SYN等待隊(duì)列溢出時(shí),啟用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)閉,這個(gè)參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時(shí)間。 net.ipv4.tcp_keepalive_time = 1200  表示當(dāng)keepalive起用的時(shí)候,TCP發(fā)送keepalive消息的頻度。缺省是2小時(shí),改為20分鐘。 net.ipv4.ip_local_port_range = 1024 65000  表示用于向外連接的端口范圍。缺省情況下很?。?2768到61000,改為1024到65000。 net.ipv4.tcp_max_syn_backlog = 8192  表示SYN隊(duì)列的長(zhǎng)度,默認(rèn)為1024,加大隊(duì)列長(zhǎng)度為8192,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。 net.ipv4.tcp_max_tw_buckets = 5000  表示系統(tǒng)同時(shí)保持TIME_WAIT套接字的較大數(shù)量,如果超過這個(gè)數(shù)字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認(rèn)為 180000,改為 5000。對(duì)于Apache、Nginx等服務(wù)器,上幾行的參數(shù)可以很好地減少TIME_WAIT套接字?jǐn)?shù)量,但是對(duì)于Squid,效果卻不大。此項(xiàng)參數(shù)可以控制TIME_WAIT套接字的較大數(shù)量,避免Squid服務(wù)器被大量的TIME_WAIT套接字拖死。 Linux上的NAT與iptables 談起Linux上的NAT,大多數(shù)人會(huì)跟你提到iptables。原因是因?yàn)閕ptables是目前在linux上實(shí)現(xiàn)NAT的一個(gè)非常好的接口。它通過和內(nèi)核級(jí)直接操作網(wǎng)絡(luò)包,效率和穩(wěn)定性都非常高。這里簡(jiǎn)單列舉一些NAT相關(guān)的iptables實(shí)例命令,可能對(duì)于大多數(shù)實(shí)現(xiàn)有多幫助。  這里說明一下,為了節(jié)省篇幅,這里把準(zhǔn)備工作的命令略去了,僅僅列出核心步驟命令,所以如果你單單執(zhí)行這些沒有實(shí)現(xiàn)功能的話,很可能由于準(zhǔn)備工作沒有做好。如果你對(duì)整個(gè)命令細(xì)節(jié)感興趣的話,可以直接訪問我的《如何讓你的Linux網(wǎng)關(guān)更強(qiáng)大》系列文章,其中對(duì)于各個(gè)腳本有詳細(xì)的說明和描述。 # 案例1:實(shí)現(xiàn)網(wǎng)關(guān)的MASQUERADE # 具體功能:內(nèi)網(wǎng)網(wǎng)卡是eth2,外網(wǎng)eth0,使得內(nèi)網(wǎng)指定本服務(wù)做網(wǎng)關(guān)可以訪問外網(wǎng) EXTERNAL="eth0" INTERNAL="eth2" # 這一步開啟ip轉(zhuǎn)發(fā)支持,這是NAT實(shí)現(xiàn)的前提 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE # 案例2:實(shí)現(xiàn)網(wǎng)關(guān)的簡(jiǎn)單端口映射 # 具體功能:實(shí)現(xiàn)外網(wǎng)通過訪問網(wǎng)關(guān)的外部ip:80,可以直接達(dá)到訪問私有網(wǎng)絡(luò)內(nèi)的一臺(tái)主機(jī)192.168.1.10:80效果 LOCAL_EX_IP=11.22.33.44 #設(shè)定網(wǎng)關(guān)的外網(wǎng)卡ip,對(duì)于多ip情況,參考《如何讓你的Linux網(wǎng)關(guān)更強(qiáng)大》系列文章 LOCAL_IN_IP=192.168.1.1  #設(shè)定網(wǎng)關(guān)的內(nèi)網(wǎng)卡ip INTERNAL="eth2" #設(shè)定內(nèi)網(wǎng)卡 # 這一步開啟ip轉(zhuǎn)發(fā)支持,這是NAT實(shí)現(xiàn)的前提 echo 1 > /proc/sys/net/ipv4/ip_forward # 加載需要的ip模塊,下面兩個(gè)是ftp相關(guān)的模塊,如果有其他特殊需求,也需要加進(jìn)來 modprobe ip_conntrack_ftp modprobe ip_nat_ftp # 這一步實(shí)現(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 # 這一步實(shí)現(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的允許,否則不能實(shí)現(xiàn)轉(zhuǎn)發(fā) iptables -A FORWARD -o $INTERNAL -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT # 通過上面重要的三句話之后,實(shí)現(xiàn)的效果是,通過網(wǎng)關(guān)的外網(wǎng)ip:80訪問,全部轉(zhuǎn)發(fā)到內(nèi)網(wǎng)的192.168.1.10:80端口,實(shí)現(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 # 一個(gè)重要的思想:數(shù)據(jù)包根據(jù)“從哪里來,回哪里去”的策略來走,所以不必?fù)?dān)心回頭數(shù)據(jù)的問題 # 現(xiàn)在還有一個(gè)問題,網(wǎng)關(guān)自己訪問自己的外網(wǎng)ip:80,是不會(huì)被NAT到192.168.1.10的,這不是一個(gè)嚴(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信息和診斷錯(cuò)誤 了解/proc目錄的意義 在Linux系統(tǒng)中,/proc是一個(gè)特殊的目錄,proc文件系統(tǒng)是一個(gè)偽文件系統(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ù)可以實(shí)現(xiàn)系統(tǒng)內(nèi)核參數(shù)的調(diào)節(jié),比如是否允許ip轉(zhuǎn)發(fā),syn-cookie是否打開,tcp超時(shí)時(shí)間等。 獲得參數(shù)的方式: 第一種:cat /proc/xxx/xxx,如 cat /proc/sys/net/ipv4/conf/all/rp_filter 第二種:sysctl xxx.xxx.xxx,如 sysctl net.ipv4.conf.all.rp_filter 改變參數(shù)的方式: 第一種:echo value > /proc/xxx/xxx,如 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter 第二種:sysctl [-w] variable=value,如 sysctl [-w] net.ipv4.conf.all.rp_filter=1 以上設(shè)定系統(tǒng)參數(shù)的方式只對(duì)當(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)計(jì)信息(Kernel slab allocator statistics) /proc/sys/net/ipv4/ip_conntrack_max:系統(tǒng)支持的較大ipv4連接數(shù),默認(rèn)65536(事實(shí)上這也是理論較大值) /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 已建立的tcp連接的超時(shí)時(shí)間,默認(rèn)432000,也就是5天 和NAT相關(guān)的狀態(tài)值 /proc/net/ip_conntrack:當(dāng)前的前被跟蹤的連接狀況,nat翻譯表就在這里體現(xiàn)(對(duì)于一個(gè)網(wǎng)關(guān)為主要功能的Linux主機(jī),里面大部分信息是NAT翻譯表) /proc/sys/net/ipv4/ip_local_port_range:本地開放端口范圍,這個(gè)范圍同樣會(huì)間接限制NAT表規(guī)模 # 1. 查看當(dāng)前系統(tǒng)支持的較大連接數(shù) cat /proc/sys/net/ipv4/ip_conntrack_max  # 值:默認(rèn)65536,同時(shí)這個(gè)值和你的內(nèi)存大小有關(guān),如果內(nèi)存128M,這個(gè)值較大8192,1G以上內(nèi)存這個(gè)值都是默認(rèn)65536 # 影響:這個(gè)值決定了你作為NAT網(wǎng)關(guān)的工作能力上限,所有局域網(wǎng)內(nèi)通過這臺(tái)網(wǎng)關(guān)對(duì)外的連接都將占用一個(gè)連接,如果這個(gè)值太低,將會(huì)影響吞吐量 # 2. 查看tcp連接超時(shí)時(shí)間 cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established  # 值:默認(rèn)432000(秒),也就是5天 # 影響:這個(gè)值過大將導(dǎo)致一些可能已經(jīng)不用的連接常駐于內(nèi)存中,占用大量鏈接資源,從而可能導(dǎo)致NAT ip_conntrack: table full的問題 # 建議:對(duì)于NAT負(fù)載相對(duì)本機(jī)的 NAT表大小很緊張的時(shí)候,可能需要考慮縮小這個(gè)值,以盡早清除連接,保證有可用的連接資源;如果不緊張,不必修改 # 3. 查看NAT表使用情況(判斷NAT表資源是否緊張) # 執(zhí)行下面的命令可以查看你的網(wǎng)關(guān)中NAT表情況 cat /proc/net/ip_conntrack # 4. 查看本地開放端口的范圍 cat /proc/sys/net/ipv4/ip_local_port_range # 返回兩個(gè)值,最小值和較大值 # 下面的命令幫你明確一下NAT表的規(guī)模 wc -l /proc/net/ip_conntrack #或者 grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print $1 ',' $2;}' # 下面的命令幫你明確可用的NAT表項(xiàng),如果這個(gè)值比較大,那就說明NAT表資源不緊張 grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print $1 ',' $3;}' # 下面的命令幫你統(tǒng)計(jì)NAT表中占用端口最多的幾個(gè)ip,很有可能這些家伙再做一些bt的事情,嗯bt的事情:-) cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10 # 上面這個(gè)命令有點(diǎn)瑕疵cut -d' ' -f10會(huì)因?yàn)槊钶敵鲇行┬腥表?xiàng)而造成統(tǒng)計(jì)偏差,下面給出一個(gè)正確的寫法: 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

關(guān)于怎么進(jìn)行l(wèi)inux內(nèi)核參數(shù)優(yōu)化問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站標(biāo)題:怎么進(jìn)行l(wèi)inux內(nèi)核參數(shù)優(yōu)化-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article42/dsioec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站改版商城網(wǎng)站、靜態(tài)網(wǎng)站網(wǎng)站導(dǎo)航、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司