共享內存:
可以通過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個于共享內存相關的參數:SHMMAX,SHMMNI,SHMALL
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
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
消息隊列
為進程提供了一種異步傳遞消息的方法。在使用 msgget()建立了一條消息隊
列之后,發送進程和接收進程就可以通過這條消息隊列交換消息。發送進程將消息發送到
指定的消息隊列,而接收者試圖從指定的消息隊列中獲取消息。如果該隊列中沒有消息的
話,則接收者根據自己是否要等待的意愿而阻塞或返回某個標志。
名??? 稱 描??? 述 默 認 值 最 大 值?
msgmni 最大消息隊列數 16 2GB?
msgmax 最大消息長度(字節數) 8192 2GB?
msgmnb 消息隊列中的最大字節數 16384 2GB
?
msgmni 定義了系統范圍內的消息隊列上限。與信號量一樣,消息隊列也擁有一個相關
的標識符。在系統初始化階段里,內核創建一個指向消息隊列標識符結構的指針數組。該
數組的項數由 msgmni確定。對于每個消息隊列,Linux 內核為標識符分配44B,為消息隊
列數據結構分配 96B。為了獲得更多的消息隊列資源,可以動態增加 msgmni 取值。和信
號量一樣,消息隊列標識符的最大數目也受限于IPCMNI。msgmni的默認上限為 16B,這
可能不足以保證一些大型數據庫應用平滑地運行。如果在系統上要運行數據庫應用的話,
推薦默認上限值是 128B。
msgmax 限制進程可以發送的消息長度。該參數由 Msgsnd()函數加以應用。如果待發
送消息的長度超過該值,則返回一個錯誤。該參數可以在運行時調整
?
msgmnb 確定一個消息隊列的容量。該參數的取值存儲在消息隊列標識符結構的某個
域中,用于確定是否存在著對新消息進行排隊的空間。msgmnb 值可以動態修改,默認為
16384。修改其取值會影響到所有新的消息隊列的容量。用戶可以通過 Msgctl()系統調用來
增加現有消息隊列的容量
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
