主頁(yè) > 知識(shí)庫(kù) > CentOS5.x系統(tǒng)內(nèi)核優(yōu)化詳解

CentOS5.x系統(tǒng)內(nèi)核優(yōu)化詳解

熱門(mén)標(biāo)簽:百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 硅谷的囚徒呼叫中心 外呼系統(tǒng) 美團(tuán) 解決方案 家政服務(wù)網(wǎng)絡(luò) 電話機(jī)器人搭建 服務(wù)器配置

主要是針對(duì)/etc/sysctl.conf里的各項(xiàng)進(jìn)行詳細(xì)解析,所有內(nèi)容經(jīng)網(wǎng)絡(luò)搜集并整理,方便大家學(xué)習(xí)了解。

系統(tǒng)優(yōu)化項(xiàng):

kernel.sysrq = 0

#使用sysrq組合鍵是了解系統(tǒng)目前運(yùn)行情況,為安全起見(jiàn)設(shè)為0關(guān)閉 

 kernel.core_uses_pid = 1

#控制core文件的文件名是否添加pid作為擴(kuò)展 

kernel.msgmnb = 65536

#每個(gè)消息隊(duì)列的大小限制,以字節(jié)為單位

kernel.msgmni = 16 

#整個(gè)系統(tǒng)最大消息隊(duì)列數(shù)量限制,此值可以根據(jù)需要增大.

kernel.msgmax = 65536

#每個(gè)消息的最大size

kernel.shmmax = 68719476736

#可用共享內(nèi)存段的大?。▎挝唬鹤止?jié))限制

kernel.shmall = 4294967296

#所有內(nèi)存大小(單位:頁(yè),1頁(yè) = 4Kb) 

kernel.shmmni = 4096

#控制共享內(nèi)存段總數(shù),目前的參數(shù)值是4096

kernel.sem = 250 32000 100 128

或kernel.sem =5010 641280 5010 128

#SEMMSL(每個(gè)用戶擁有信號(hào)量最大數(shù)量),SEMMNS(系統(tǒng)信號(hào)量最大數(shù)量),SEMOPM(每次semop系統(tǒng)調(diào)用操作數(shù)),SEMMNI(系統(tǒng)信號(hào)量集最大數(shù)量)

fs.aio-max-nr = 65536或取(1048576)(3145728)值

# 在系統(tǒng)級(jí)支持異步I/O,當(dāng)系統(tǒng)進(jìn)行大量的連續(xù)IO會(huì)使用較大的值

fs.aio-max-size = 131072  

#異步IO的最大大小

fs.file-max = 65536        

#表示文件句柄的最大數(shù)量

net.core.wmem_default = 8388608

#為T(mén)CP socket預(yù)留用于發(fā)送緩沖的內(nèi)存默認(rèn)值(單位:字節(jié))

net.core.wmem_max = 16777216

#為T(mén)CP socket預(yù)留用于發(fā)送緩沖的內(nèi)存最大值(單位:字節(jié))

net.core.rmem_default = 8388608

#為T(mén)CP socket預(yù)留用于接收緩沖的內(nèi)存默認(rèn)值(單位:字節(jié)) 

net.core.rmem_max = 16777216

#為T(mén)CP socket預(yù)留用于接收緩沖的內(nèi)存最大值(單位:字節(jié))

net.core.somaxconn = 262144

#listen(函數(shù))的默認(rèn)參數(shù),掛起請(qǐng)求的最大數(shù)量限制 

網(wǎng)絡(luò)優(yōu)化項(xiàng):

net.ipv4.ip_forward = 0

#禁用包過(guò)濾、轉(zhuǎn)發(fā)功能 

net.ipv4.tcp_syncookies = 1

#開(kāi)啟SYN COOKIES功能

net.ipv4.conf.default.rp_filter = 1

#啟用源路由核查功能 

net.ipv4.conf.default.accept_source_route = 0

#禁用所有IP源路由 

net.ipv4.route.gc_timeout = 100

#路由緩存刷新頻率, 當(dāng)一個(gè)路由失敗后多長(zhǎng)時(shí)間跳到另一個(gè)默認(rèn)是300

net.ipv4.ip_local_port_range = 1024 65000

#對(duì)外連接端口范圍,缺省情況下很小:32768到61000,改為1024到65000。

net.ipv4.tcp_max_tw_buckets = 6000

#表示系統(tǒng)同時(shí)保持TIME_WAIT套接字的最大數(shù)量,如果超過(guò)這個(gè)數(shù)字,TIME_WAIT套接字將立刻被清除并打印警告信息,默認(rèn)為180000

net.ipv4.tcp_sack = 1

#在高延遲的連接中,SACK 對(duì)于有效利用所有可用帶寬尤其重要。高延遲會(huì)導(dǎo)致在任何給定時(shí)刻都有大量正在傳送的包在等待應(yīng)答。在 Linux 中,除非得到應(yīng)答或不再需要,這些包將一直存放在重傳隊(duì)列中。這些包按照序列編號(hào)排隊(duì),但不存在任何形式的索引。當(dāng)需要處理一個(gè)收到的 SACK 選項(xiàng)時(shí),TCP 協(xié)議棧必須在重傳隊(duì)列中找到應(yīng)用了 SACK 的包。重傳隊(duì)列越長(zhǎng),找到所需的數(shù)據(jù)就越困難。一般可關(guān)閉這個(gè)功能。選擇性應(yīng)答在高帶寬延遲的網(wǎng)絡(luò)連接上對(duì)性能的影響很大,但也可將其禁用,這不會(huì)犧牲互操作性。將其值設(shè)置為 0 即可禁用 TCP 協(xié)議棧中的 SACK 功能。

net.core.netdev_max_backlog = 262144

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

net.ipv4.tcp_window_scaling = 1

#TCP窗口擴(kuò)大因子支持. 如果TCP窗口最大超過(guò)65535(64K), 設(shè)置該數(shù)值為1 。Tcp窗口擴(kuò)大因子是一個(gè)新選項(xiàng),一些新的實(shí)現(xiàn)才會(huì)包含該選項(xiàng),為了是新舊協(xié)議兼容,做了如下約定:1、只有主動(dòng)連接方的第一個(gè)syn可以發(fā)送窗口擴(kuò)大因子;2、被動(dòng)連接方接收到帶有窗口擴(kuò)大因子的選項(xiàng)后,如果支持,則可以發(fā)送自己的窗口擴(kuò)大因子,否則忽略該選項(xiàng);3、如果雙方支持該選項(xiàng),那么后續(xù)的數(shù)據(jù)傳輸則使用該窗口擴(kuò)大因子。如果對(duì)方不支持wscale,那么它不應(yīng)該響應(yīng) wscale 0,而且在收到46的窗口時(shí)不應(yīng)該發(fā)送1460的數(shù)據(jù);如果對(duì)方支持wscale,那么它應(yīng)該大量發(fā)送數(shù)據(jù)來(lái)增加吞吐量,不至于通過(guò)關(guān)閉wscale來(lái)解決問(wèn)題,如果是使用普遍的協(xié)議實(shí)現(xiàn),那么就需要關(guān)閉wscale來(lái)提高性能并以防萬(wàn)一。

net.ipv4.tcp_rmem = 4096 87380 4194304

#TCP讀buffer 

net.ipv4.tcp_wmem = 4096 16384 4194304

#TCP寫(xiě)buffer

net.ipv4.tcp_max_orphans = 3276800

#系統(tǒng)中最多有多少個(gè)TCP套接字不被關(guān)聯(lián)到任何一個(gè)用戶文件句柄上。如果超過(guò)這個(gè)數(shù)字,孤兒連接將即刻被復(fù)位并打印出警告信息。這個(gè)限制僅僅是為了防止簡(jiǎn)單的DoS攻擊,不能過(guò)分依靠它或者人為地減小這個(gè)值,更應(yīng)該增加這個(gè)值(如果增加了內(nèi)存之后)。

net.ipv4.tcp_max_syn_backlog = 262144

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

net.ipv4.tcp_timestamps = 0

#時(shí)間戳可以避免序列號(hào)的卷繞。一個(gè)1Gbps 的鏈路肯定會(huì)遇到以前用過(guò)的序列號(hào)。時(shí)間戳能夠讓內(nèi)核接受這種“異常”的數(shù)據(jù)包。這里需要將其關(guān)掉。

net.ipv4.tcp_synack_retries = 1

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

net.ipv4.tcp_syn_retries = 1

#對(duì)于一個(gè)新建連接,內(nèi)核要發(fā)送多少個(gè) SYN 連接請(qǐng)求才決定放棄。不應(yīng)該大于255,默認(rèn)值是5

net.ipv4.tcp_tw_recycle = 1

#啟用timewait快速回收

net.ipv4.tcp_tw_reuse = 1

#開(kāi)啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接。

net.ipv4.tcp_mem = 94500000 915000000 927000000

#1st低于此值,TCP沒(méi)有內(nèi)存壓力,2nd進(jìn)入內(nèi)存壓力階段,3rdTCP拒絕分配socket(單位:內(nèi)存頁(yè))

net.ipv4.tcp_fin_timeout = 1

#表示如果套接字由本端要求關(guān)閉,這個(gè)參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時(shí)間為15秒

net.ipv4.tcp_keepalive_time = 60

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

net.ipv4.tcp_keepalive_probes= 1

net.ipv4.tcp_keepalive_intvl= 2

#意思是如果某個(gè)TCP連接在idle 2分鐘后,內(nèi)核才發(fā)起probe.如果probe 1次(每次2秒)不成功,內(nèi)核才徹底放棄,認(rèn)為該連接已失效. 

最后使配置立即生效,可使用如下命令:

#/sbin/sysctl -p

我們?cè)谛阅軆?yōu)化時(shí),首先要設(shè)定性能優(yōu)化需要達(dá)到的目標(biāo),然后尋找瓶頸,調(diào)整參數(shù),達(dá)到優(yōu)化目的。尋找性能瓶頸是比較辛苦的,要從大范圍,通過(guò)很多用例和測(cè)試,不斷的縮小范圍,最終確定瓶頸點(diǎn), 有很多的參數(shù)要邊測(cè)試邊調(diào)整,這就需要我們更多的耐心和堅(jiān)持。

實(shí)例:

temp=`cat /etc/sysctl.conf|grep -c net.ipv4.tcp_max_syn_backlog`

if [ $temp -eq 0 ]

then

echo "# Add" >> /etc/sysctl.conf

echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf

echo "net.core.netdev_max_backlog =  32768" >> /etc/sysctl.conf

echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf

echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf

echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf

echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf

echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf

echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf

echo "net.ipv4.tcp_synack_retries = 2" >> /etc/sysctl.conf

echo "net.ipv4.tcp_syn_retries = 2" >> /etc/sysctl.conf

echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf

#net.ipv4.tcp_tw_len = 1

echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf

echo "net.ipv4.tcp_mem = 94500000 915000000 927000000" >> /etc/sysctl.conf

echo "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

echo "net.ipv4.ip_local_port_range = 1024  65535" >> /etc/sysctl.conf

標(biāo)簽:防城港 邢臺(tái) 北海 臨沂 烏蘭察布 撫州 韶關(guān) 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CentOS5.x系統(tǒng)內(nèi)核優(yōu)化詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266