CentOS5.x系統核心最佳化

來源:互聯網
上載者:User

CentOS5.x系統核心最佳化

主要是針對/etc/sysctl.conf裡的各項進行詳細解析,所有內容經網路搜集並整理,方便大家學習瞭解。

系統最佳化項:

kernel.sysrq = 0

#使用sysrq按鍵組合是瞭解系統目前運行情況,為安全起見設為0關閉

kernel.core_uses_pid = 1

#控制core檔案的檔案名稱是否添加pid作為擴充

kernel.msgmnb = 65536

#每個訊息佇列的大小限制,以位元組為單位

kernel.msgmni = 16

#整個系統最大訊息佇列數量限制,此值可以根據需要增大.

kernel.msgmax = 65536

#每個訊息的最大size

kernel.shmmax = 68719476736

#可用共用記憶體段的大小(單位:位元組)限制

kernel.shmall = 4294967296

#所有記憶體大小(單位:頁,1頁 = 4Kb)

kernel.shmmni = 4096

#控制共用記憶體段總數,目前的參數值是4096

kernel.sem = 250 32000 100 128

或kernel.sem =5010 641280 5010 128

#SEMMSL(每個使用者擁有訊號量最大數量),SEMMNS(系統訊號量最大數量),SEMOPM(每次semop系統叫用作業數),SEMMNI(系統訊號量集最大數量)

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

# 在系統級支援非同步I/O,當系統進行大量的連續IO會使用較大的值

fs.aio-max-size = 131072

#非同步IO的最大大小

fs.file-max = 65536

#表示檔案控制代碼的最大數量

net.core.wmem_default = 8388608

#為TCP socket預留用於發送緩衝的記憶體預設值(單位:位元組)

net.core.wmem_max = 16777216

#為TCP socket預留用於發送緩衝的記憶體最大值(單位:位元組)

net.core.rmem_default = 8388608

#為TCP socket預留用於接收緩衝的記憶體預設值(單位:位元組)

net.core.rmem_max = 16777216

#為TCP socket預留用於接收緩衝的記憶體最大值(單位:位元組)

net.core.somaxconn = 262144

#listen(函數)的預設參數,掛起請求的最大數量限制

網路最佳化項:

net.ipv4.ip_forward = 0

#禁用包過濾、轉寄功能

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

#路由緩衝重新整理頻率, 當一個路由失敗後多長時間跳到另一個預設是300

net.ipv4.ip_local_port_range = 1024 65000

#對外串連連接埠範圍,預設情況下很小:32768到61000,改為1024到65000。

net.ipv4.tcp_max_tw_buckets = 6000

#表示系統同時保持TIME_WAIT通訊端的最大數量,如果超過這個數字,TIME_WAIT通訊端將立刻被清除並列印警告資訊,預設為180000

net.ipv4.tcp_sack = 1

#在高延遲的串連中,SACK 對於有效利用所有可用頻寬尤其重要。高延遲會導致在任何給定時刻都有大量正在傳送的包在等待應答。在 Linux 中,除非得到應答或不再需要,這些包將一直存放在重傳隊列中。這些包按照序列編號排隊,但不存在任何形式的索引。當需要處理一個收到的 SACK 選項時,TCP 協議棧必須在重傳隊列中找到應用了 SACK 的包。重傳隊列越長,找到所需的資料就越困難。一般可關閉這個功能。選擇性應答在高頻寬延遲的網路連接上對效能的影響很大,但也可將其禁用,這不會犧牲互通性。將其值設定為 0 即可禁用 TCP 協議棧中的 SACK 功能。

net.core.netdev_max_backlog = 262144

#每個網路介面接收資料包的速率比核心處理這些包的速率快時,允許送到隊列的資料包的最大數目

net.ipv4.tcp_window_scaling = 1

#TCP視窗擴大因子支援. 如果TCP視窗最大超過65535(64K), 設定該數值為1 。Tcp視窗擴大因子是一個新選項,一些新的實現才會包含該選項,為了是新舊協議相容,做了如下約定:1、只有主動串連方的第一個syn可以發送視窗擴大因子;2、被動串連方接收到帶有視窗擴大因子的選項後,如果支援,則可以發送自己的視窗擴大因子,否則忽略該選項;3、如果雙方支援該選項,那麼後續的資料轉送則使用該視窗擴大因子。如果對方不支援wscale,那麼它不應該響應 wscale 0,而且在收到46的視窗時不應該發送1460的資料;如果對方支援wscale,那麼它應該大量發送資料來增加輸送量,不至於通過關閉wscale來解決問題,如果是使用普遍的協議實現,那麼就需要關閉wscale來提高效能並以防萬一。

net.ipv4.tcp_rmem = 4096 87380 4194304

#TCP讀buffer

net.ipv4.tcp_wmem = 4096 16384 4194304

#TCP寫buffer

net.ipv4.tcp_max_orphans = 3276800

#系統中最多有多少個TCP通訊端不被關聯到任何一個使用者檔案控制代碼上。如果超過這個數字,孤兒串連將即刻被複位並列印出警告資訊。這個限制僅僅是為了防止簡單的DoS攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了記憶體之後)。

net.ipv4.tcp_max_syn_backlog = 262144

#表示SYN隊列的長度,預設為1024,加大隊列長度為8192,可以容納更多等待串連的網路連接數

net.ipv4.tcp_timestamps = 0

#時間戳記可以避免序號的卷繞。一個1Gbps 的鏈路肯定會遇到以前用過的序號。時間戳記能夠讓核心接受這種“異常”的資料包。這裡需要將其關掉。

net.ipv4.tcp_synack_retries = 1

#為了開啟對端的串連,核心需要發送一個SYN 並附帶一個回應前面一個SYN 的ACK。也就是所謂三向交握中的第二次握手。這個設定決定了核心放棄串連之前發送SYN+ACK 包的數量。

net.ipv4.tcp_syn_retries = 1

#對於一個建立串連,核心要發送多少個 SYN 串連請求才決定放棄。不應該大於255,預設值是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沒有記憶體壓力,2nd進入記憶體壓力階段,3rdTCP拒絕分配socket(單位:記憶體頁)

net.ipv4.tcp_fin_timeout = 1

#表示如果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間為15秒

net.ipv4.tcp_keepalive_time = 60

#表示當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2小時,改為1分鐘。

net.ipv4.tcp_keepalive_probes= 1

net.ipv4.tcp_keepalive_intvl= 2

#意思是如果某個TCP串連在idle 2分鐘後,核心才發起probe.如果probe 1次(每次2秒)不成功,核心才徹底放棄,認為該串連已失效.

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

#/sbin/sysctl -p

我們在效能最佳化時,首先要設定效能最佳化需要達到的目標,然後尋找瓶頸,調整參數,達到最佳化目的。尋找效能瓶頸是比較辛苦的,要從大範圍,通過很多用例和測試,不斷的縮小範圍,最終確定瓶頸點, 有很多的參數要邊測試邊調整,這就需要我們更多的耐心和堅持。

執行個體:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.