設置Linux內核參數 /etc/sysctl.conf

 

設置Linux內核參數 /etc/sysctl.conf
 
配置 Linux 內核參數修改後不用重啓動更新: /sbin/sysctl -p

打開/etc/sysctl.conf 複製以下內容
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024      65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
這裏,對每一個參數值作個簡要的解釋和說明。
     (1)shmmax:該參數定義了共享內存段的最大尺寸(以字節爲單位)。缺省爲32M,對於oracle來講,該缺省值過低了,一般將其設置爲2G。
     (2)shmmni:這個內核參數用於設置系統範圍內共享內存段的最大數量。該參數的默認值是 4096 。一般不須要更改。
     (3)shmall:該參數表示系統一次可使用的共享內存總量(以頁爲單位)。缺省值就是2097152,一般不須要修改。
     (4)sem:該參數表示設置的信號量。
     (5) file-max :該參數表示文件句柄的最大數量。文件句柄設置表示在 linux 系統中能夠打開的文件數量。
     修改好內核之後,執行下面的命令使新的配置生效。
 
Linux 如何在系統運行時修改內核參數(/proc/sys與/etc/sysctl.conf)  
RedHat提供了很是好的方法,使咱們能夠在系統運行時更改內核參數,而不須要從新引導系統。這是經過/proc虛擬文件系統實現的。
/ proc/sys 目錄下存放着大多數的內核參數,而且設計成能夠在系統運行的同時進行更改 , 不太重新啓動機器後會失效,能夠經過更改 /proc/sys 中內核參數對應的文件 /etc/sysctl.conf 的內核參數來永久更改。
下面咱們以打開內核的 ip轉發功能爲例說明在系統運行時修改內核參數的兩種方法。IP轉發是指容許系統對來源和目的地都不是本機的數據包經過 網絡,RedHat默認屏蔽此功能,在 須要用本機做爲 路由器、NAT等狀況下須要開啓此功能。

  方法一:修改/proc下內核參數文件內容

  直接修改內核參數ip_forward對應在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件內容:
  # cat /proc/sys/net/ipv4/ip_forward
  該文件默認值0是禁止ip轉發,修改成1即開啓ip轉發功能。修改命令以下:
  # echo 1 >/proc/sys/net/ipv4/ip_forward
  修改事後就立刻生效,即內核已經打開ip轉發功能。但若是系統重啓後則又恢復爲默認值0,若是想永久打開須要經過修改/etc/sysctl.conf文件的內容來實現。

  方法二.修改/etc/sysctl.conf文件
  默認sysctl.conf文件中有一個變量是
  net.ipv4.ip_forward = 0
  將後面值改成1,而後保存文件。由於每次系統啓動時初始化腳本/etc/rc.d/rc.sysinit會讀取/etc/sysctl.conf文件的內容,因此修改後每次系統啓動時都會開啓ip轉發功能。但只是修改sysctl文件不會立刻生效,若是想使修改立刻生效能夠執行下面的命令:
  # sysctl –p


  在修改其餘內核參數時能夠向/etc/sysctl.conf文件中添加相應變量便可,
下面介紹 /proc/sys 下內核文件與配置文件 sysctl.conf 中變量的對應關係
因爲能夠修改的內核參數都在/proc/sys目錄下,因此sysctl.conf的變量名省略了目錄的前面部分(/proc/sys)。

  將/proc/sys中的文件轉換成sysctl中的變量依據下面兩個簡單的規則:

  1.去掉前面部分/proc/sys

  2.將文件名中的斜槓變爲點

  這兩條規則能夠將/proc/sys中的任一文件名轉換成sysctl中的變量名。

  例如:

  /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward

  /proc/sys/kernel/hostname =》 kernel.hostname

  可使用下面命令查詢全部可修改的變量名

  # sysctl –a

  下面例舉幾個簡單的內核參數:

  1./proc/sys/kernel/shmmax
  該文件指定內核所容許的最大共享內存段的大小。

  2./proc/sys/kernel/threads-max
  該文件指定內核所能使用的線程的最大數目。

  3./proc/sys/kernel/hostname
  該文件容許您配置網絡主機名。

  4./proc/sys/kernel/domainname
  該文件容許您配置網絡域名 
 
Java 代碼   
1. net.ipv4.tcp_syncookies = 1  

表示開啓SYN Cookies。當出現SYN等待隊列溢出時,啓用cookies來處理,可防範少許SYN***,默認爲0,表示關閉; 
Java 代碼   
1. net.ipv4.tcp_tw_reuse = 1  

表示開啓重用。容許將TIME-WAIT sockets從新用於新的TCP鏈接,默認爲0,表示關閉; 
Java 代碼   
1. net.ipv4.tcp_tw_recycle = 1  

表示開啓TCP鏈接中TIME-WAIT sockets的快速回收,默認爲0,表示關閉。 
Java 代碼   
1. net.ipv4.tcp_fin_timeout = 30  

表示若是套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。 
Java 代碼   
1. net.ipv4.tcp_keepalive_time = 1200   

表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改成20分鐘。 
Java 代碼   
1. net.ipv4.ip_local_port_range = 1024 65000   

表示用於向外鏈接的端口範圍。缺省狀況下很小:32768到61000,改成1024到65000。 
Java 代碼   
1. net.ipv4.tcp_max_syn_backlog = 8192   

表示SYN隊列的長度,默認爲1024,加大隊列長度爲8192,能夠容納更多等待鏈接的網絡鏈接數。 


若是高負載系統使用了 netfilter/iptables ,調整如下參數 
Java 代碼   
1. net.ipv4.ip_conntrack_max = 655360   

在內核內存中netfilter能夠同時處理的「任務」(鏈接跟蹤條目) 
Java 代碼   
1. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180  
跟蹤的鏈接超時結束時間  而後執行/sbin/sysctl -p讓參數生效
相關文章
相關標籤/搜索