您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“CentOS5.x系統內核優化的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“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
以上是“CentOS5.x系統內核優化的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。