共享內(nèi)存:
可以通過ipcs -lm命令查看目前系統(tǒng)共享內(nèi)存的參數(shù)限制:
# 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個(gè)于共享內(nèi)存相關(guān)的參數(shù):SHMMAX,SHMMNI,SHMALL
SHMMAX
含義:?jiǎn)蝹€(gè)共享內(nèi)存段最大字節(jié)數(shù)
設(shè)置:比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
含義:共享內(nèi)存段最大個(gè)數(shù)
設(shè)置:至少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
含義:系統(tǒng)中共享內(nèi)存頁(yè)總數(shù)
設(shè)置:至少ceil(shmmax/PAGE_SIZE);ORACLE DOC 默認(rèn)值: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
消息隊(duì)列
為進(jìn)程提供了一種異步傳遞消息的方法。在使用 msgget()建立了一條消息隊(duì)
列之后,發(fā)送進(jìn)程和接收進(jìn)程就可以通過這條消息隊(duì)列交換消息。發(fā)送進(jìn)程將消息發(fā)送到
指定的消息隊(duì)列,而接收者試圖從指定的消息隊(duì)列中獲取消息。如果該隊(duì)列中沒有消息的
話,則接收者根據(jù)自己是否要等待的意愿而阻塞或返回某個(gè)標(biāo)志。
名??? 稱 描??? 述 默 認(rèn) 值 最 大 值?
msgmni 最大消息隊(duì)列數(shù) 16 2GB?
msgmax 最大消息長(zhǎng)度(字節(jié)數(shù)) 8192 2GB?
msgmnb 消息隊(duì)列中的最大字節(jié)數(shù) 16384 2GB
?
msgmni 定義了系統(tǒng)范圍內(nèi)的消息隊(duì)列上限。與信號(hào)量一樣,消息隊(duì)列也擁有一個(gè)相關(guān)
的標(biāo)識(shí)符。在系統(tǒng)初始化階段里,內(nèi)核創(chuàng)建一個(gè)指向消息隊(duì)列標(biāo)識(shí)符結(jié)構(gòu)的指針數(shù)組。該
數(shù)組的項(xiàng)數(shù)由 msgmni確定。對(duì)于每個(gè)消息隊(duì)列,Linux 內(nèi)核為標(biāo)識(shí)符分配44B,為消息隊(duì)
列數(shù)據(jù)結(jié)構(gòu)分配 96B。為了獲得更多的消息隊(duì)列資源,可以動(dòng)態(tài)增加 msgmni 取值。和信
號(hào)量一樣,消息隊(duì)列標(biāo)識(shí)符的最大數(shù)目也受限于IPCMNI。msgmni的默認(rèn)上限為 16B,這
可能不足以保證一些大型數(shù)據(jù)庫(kù)應(yīng)用平滑地運(yùn)行。如果在系統(tǒng)上要運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用的話,
推薦默認(rèn)上限值是 128B。
msgmax 限制進(jìn)程可以發(fā)送的消息長(zhǎng)度。該參數(shù)由 Msgsnd()函數(shù)加以應(yīng)用。如果待發(fā)
送消息的長(zhǎng)度超過該值,則返回一個(gè)錯(cuò)誤。該參數(shù)可以在運(yùn)行時(shí)調(diào)整
?
msgmnb 確定一個(gè)消息隊(duì)列的容量。該參數(shù)的取值存儲(chǔ)在消息隊(duì)列標(biāo)識(shí)符結(jié)構(gòu)的某個(gè)
域中,用于確定是否存在著對(duì)新消息進(jìn)行排隊(duì)的空間。msgmnb 值可以動(dòng)態(tài)修改,默認(rèn)為
16384。修改其取值會(huì)影響到所有新的消息隊(duì)列的容量。用戶可以通過 Msgctl()系統(tǒng)調(diào)用來
增加現(xiàn)有消息隊(duì)列的容量
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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