這篇文章主要為大家展示了“CentOS5.x系統(tǒng)內(nèi)核優(yōu)化的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“CentOS5.x系統(tǒng)內(nèi)核優(yōu)化的示例分析”這篇文章吧。
峨邊彝族網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
主要是針對(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)行情況,為安全起見設(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
#為TCP socket預(yù)留用于發(fā)送緩沖的內(nèi)存默認(rèn)值(單位:字節(jié))
net.core.wmem_max = 16777216
#為TCP socket預(yù)留用于發(fā)送緩沖的內(nèi)存最大值(單位:字節(jié))
net.core.rmem_default = 8388608
#為TCP socket預(yù)留用于接收緩沖的內(nèi)存默認(rèn)值(單位:字節(jié))
net.core.rmem_max = 16777216
#為TCP 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
#開啟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ì)外連接端口范圍,缺省情況下很?。?2768到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寫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
#為了打開對(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
#開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接。
net.ipv4.tcp_mem = 94500000 915000000 927000000
#1st低于此值,TCP沒有內(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
以上是“CentOS5.x系統(tǒng)內(nèi)核優(yōu)化的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!