共享內存和信號量

共享內存:

可以通過ipcs -lm命令查看目前系統共享內存的參數限制:

# ipcs -lm

—— Shared Memory Limits ——–

max number of segments = 4096

max seg size (kbytes) = 1048576

max total shared memory (pages) = 2097152

min seg size (bytes) = 1

這裏涉及到3個於共享內存相關的參數:SHMMAXSHMMNISHMALL

SHMMAX

含義:每個共享內存段的最大字節數

設置:比SGA略大

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

$ cat /proc/sys/kernel/shmmax

1073741824

修改:

sysctl -w kernel.shmmax=1073741824

echo "kernel.shmmax = 1073741824" >> /etc/sysctl.conf

SHMMIN

含義:每個共享內存段的最小字節數

SHMSEG

含義:每進程最大共享內存段數量

SHMMNI

含義:系統範圍最大共享內存段的數量

設置:至少4096

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

# cat /proc/sys/kernel/shmmni

4096

修改:

# sysctl -w kernel.shmmni=4096

# echo "kernel.shmmni = 4096" >> /etc/sysctl.conf

SHMALL

含義:系統中共享內存頁總數

設置:至少ceil(shmmax/PAGE_SIZE)ORACLE DOC 默認值:2097152*4096=8GB

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

$ getconf PAGE_SIZE

4096

# cat /proc/sys/kernel/shmall

2097152

修改:

# sysctl -w kernel.shmall=2097152

# echo "kernel.shmall = 2097152" >> /etc/sysctl.conf

信號量:

當前系統信號量限制:

$ ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32(設置成100比較好)

semaphore max value = 32767

SEMMNI

含義:信號燈標識符的最小數量(也就是說,套)

設置:最少128

SEMMSL

含義:每套信號燈最小信號燈數量

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

一套信號燈裏可以有多少信號燈,對於Postgres而言應該至少是 17

SEMMNS

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

設置:至少32000SEMMNI *SEMMSL

SEMOPM

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

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

查看信號量設置:cat /proc/sys/kernel/sem

SEMVMX
信號燈的最大值(semaphore max value = 32767

orderSEMMSL, SEMMNS, SEMOPM, SEMMNI

$ cat /proc/sys/kernel/sem

250    32000    100    128

修改:

sysctl -w kernel.sem="250 32000 100 128"

echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf

ORACLE提供了sysresv工具管理共享內存以及信號量,操作系統級別可以通過ipcs管理。

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 # 應用程序可使用的IPv4端口範圍。

net.core.rmem_default = 1048576 # 套接字接收緩衝區大小的缺省值

net.core.rmem_max = 1048576 # 套接字接收緩衝區大小的最大值

net.core.wmem_default = 262144 # 套接字發送緩衝區大小的缺省值

net.core.wmem_max = 262144 # 套接字發送緩衝區大小的最大值

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