Linux 內核參數設置於詳解 --Oracle 安裝

  

1.         Linux核心參數

 

#vi /etc/sysctl.conf

--------------------------------

cat >>/etc/sysctl.conf <<EOF

kernel.shmall = 2097152

kernel.shmmax = 536870912

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.rmem_max=262144

net.core.wmem_default=262144

net.core.wmem_max=262144

EOF

--------------------------------

# /sbin/sysctl -p

使修改的參數生效。

2.         kernel.shmmax

含義:共享內存段最大值(以字節爲單位)。

設置:kernel.shmmax>=sag_max_size  不小於物理內存的一半,應該足夠大。

查看:cat /proc/sys/kernel/shmmax

           ipcs –lm

引用:

shmmax設置應該足夠大,能在一個共享內存段下容納下整個的SGA ,設置的過低可能會導致需要創建多個共享內存段,這樣可能導致系統性能的下降。

SHMMAX僅僅是在共享內存段被創建的時候用來比較的一個數字,當共享內存段被一個進程(Process)創建,操作系統檢查是否被要求的共享內存段的值大於 shmmax 的值,如果是,那麼將會拋出一個錯誤。這個時候系統會創建另外的一個或多個共享內存段滿足進程的需求。一般來說,共享內存段個數和系統性能沒有太直接的關係,也不會對性能產生太大的影響。

Steve Adams 在他的小冊子中說過,在實例啓動以及Server Process 創建的時候,多個小的共享內存段可能會導致當時輕微的系統性能的降低(在啓動的時候需要去創建多個虛擬地址段,在進程創建的時候要讓進程對多個段進行“識別”,會有一些影響,但是其他時候都不會有影響。這意味着如果你的程序不是經常 CreateProcesses(以及Destroy Them,性能方面就不是考慮的問題。

Oracle 安裝文檔建議 32BitLinux 系統設置shmmax 32Bit 最大的限制值(setting shmmax to the 32-bit number limit),也就是4G

所以一般來說,1-4G 的物理內存,可以直接設置shmmax爲最大物理內存即可,那麼SGA 肯定在一個共享內存段中,32Bit Linux 系統物理內存大於4G 的設置爲4G 即可

總之,一般設置shmmax >=SGA(32Bit 系統是否支持到1.7G 以上SGA 需要注意) ,缺省爲32M

如果是64Bit Linux 操作系統,shmmax 設置爲大於SGA_MAX_SIZE即可。

 

3.         kernel.shmall

含義:控制共享內存頁數(以頁爲單位)。

設置:kernel.shmall > = kernel.shmmax / page_size  ORACLE DOC 默認值:2097152*4096=8GB

   控制共享內存頁數(shmall) = 最大共享內存段的大小(shmmax) / 共享內存頁的大小(4KB)

查看:cat /proc/sys/kernel/shmall

Linux共享內存頁大小爲4KB。共享內存段的大小都是共享內存頁大小的整數倍。

一個共享內存段的最大大小是16G,那麼需要共享內存頁數是16GB/4KB = 16777216KB / 4KB = 4194304(頁),也就是64Bit 系統下16GB 物理內存,設置 kernel.shmall = 4194304才符合要求(幾乎是原來設置2097152的兩倍)。這時可以將shmmax 參數調整到 16G 了,同時可以修改SGA_MAX_SIZE SGA_TARGET 12G(您想設置的SGA 最大大小,當然也可以是2G~14G 等,還要協調PGA參數及OS 等其他內存使用,不能設置太滿,比如16G)。

其值應不小於shmmax/page_size.缺省值就是2097152,如果服務器上運行的所有實例的SGA總和不超過8GB(通常系統可分配的共享內存的和最大值爲8GB),通常不需要修改。

4.         kernel.shmmni

含義:設置系統範圍內共享內存段的最大數量。 PS:注意這個參數不是shmminshmmni; shmmin 表示內存段最小大小。

設置:shmmni 缺省值4096

查看:cat /proc/sys/kernel/shmmni

5.         fs.file-max

含義:一個進程可以打開的文件句柄的最大數量。

設置:fs.file-max=65536

查看:cat /etc/sysctl.conf |grep 'fs.file-max'

6.         net.ipv4.ip_local_port_range

含義:專用服務器模式下與用戶進程通信時分配給用戶的端口區間。

設置:net.ipv4.ip_local_port_range = 1024 65000

查看:cat /etc/sysctl.conf |grep 'net.ipv4.ip_local'

7.         net.core.rmem_default

含義:默認接收緩衝區大小。

設置:net.core.rmem_default=262144

查看:cat /etc/sysctl.conf

8.         net.core.rmem_max

含義:接收緩衝區最大值。

設置:net.core.rmem_max=262144

查看:cat /etc/sysctl.conf

9.         net.core.wmem_default

含義:默認的發送緩衝區大小。

設置:net.core.wmem_default=262144

查看:cat /etc/sysctl.conf

10.     net.core.wmem_max

含義:發送緩衝區最大值。

查看:net.core.wmem_max=262144

設置:cat /etc/sysctl.conf

11.     kernel.sem 信號量

含義:

查看:cat /proc/sys/kernel/sem      ipcs -ls

1>.semmsl

含義:每個信號量set中信號量最大個數

設置:最小250;對於processes參數設置較大的系統建議設置爲processes+10

         2>.semmns

         含義:linux系統中信號量最大個數

         設置:至少32000SEMMSL * SEMMNI

         3>.semopm

         含義:semop系統調用允許的信號量最大個數

         設置:至少100;或者等於SEMMSL

         4>.semmni

         含義:linux系統信號量set最大個數

                     設置:最少128

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章