PostgreSQL--信號量和shmall和shmmax相關(guān)設(shè)置-創(chuàng)新互聯(lián)

一、shared_buffers與shmmax,shmall,max_connections的關(guān)系

1.1、shared_buffers與max_connections的關(guān)系

shared_buffers 是查詢緩存,設(shè)置比較大可以提高PostgreSQL的效率,一般建議設(shè)置為系統(tǒng)內(nèi)存的3/4,但是必須不少于128KB,并且不少于16KB乘以max_connections
?

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)余干,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1.2、shared_buffers與shmmax,shmall的關(guān)系

shared_buffers該參數(shù)不能超過由操作系統(tǒng)參數(shù)SHMMAX指定的值

內(nèi)核的 shmall 和 shmmax 參數(shù)設(shè)置在/etc/sysctl.conf文件中,通過sysctl -p 可以生效

SHMMAX= 配置了大的內(nèi)存segment的大小 ------>這個設(shè)置的比SGA_MAX_SIZE大比較好。

SHMMIN= 最小的內(nèi)存segment的大小

SHMMNI= 整個系統(tǒng)的內(nèi)存segment的總個數(shù)

SHMSEG= 每個進(jìn)程可以使用的內(nèi)存segment的大個數(shù)

shmall 是全部允許使用的共享內(nèi)存大小,shmmax 是單個段允許使用的大小。這兩個可以設(shè)置為內(nèi)存的 90%。例如 16G 內(nèi)存,1610241024102490% = 15461882265,shmall 的大小為 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
修改 /etc/sysctl.conf
kernel.shmmax=15461882265
kernel.shmall=3774873
kernel.msgmax=65535
kernel.msgmnb=65535
執(zhí)行 sudo sysctl -p
可以使用 ipcs -l 看結(jié)果。ipcs -u 可以看到實際使用的情況

備注:shmmax & shmall 在PostgreSQL9.3開始,將共享內(nèi)存從system V 修改為Posix和mmap方式,不再需要設(shè)置linux系統(tǒng)的shmmax參數(shù)

二、max_connections與信號量的關(guān)系

如果max_connections設(shè)置太大,信號量被消耗完畢,有可能會導(dǎo)致PostgreSQL無法啟動

2.1、信號量設(shè)置

信號量控制設(shè)置在/etc/sysctl.conf文件中,通過sysctl -p 可以生效,該文件用于控制內(nèi)核信號量,信號量是System VIPC用于進(jìn)程間通訊的方法。

kernel.sem = 250 512000 100 2048

2.2、查詢當(dāng)前信號量使用情況

查看當(dāng)前信號量使用情況
PostgreSQL--信號量和shmall 和 shmmax相關(guān)設(shè)置
?

2.3、查看當(dāng)前的設(shè)置:

cat /proc/sys/kernel/sem
PostgreSQL--信號量和shmall 和 shmmax相關(guān)設(shè)置
這四個數(shù)字分別是:SEMMSL,SEMMNS,SEMOPM,SEMMNI
SEMMSL:內(nèi)核參數(shù),控制每個信號量集合的大信號數(shù)。
SEMMNS:內(nèi)核參數(shù),控制系統(tǒng)范圍內(nèi)能使用的大信號量數(shù)。
SEMOPM:semop()函數(shù)(內(nèi)核函數(shù),用來操作信號量)每次調(diào)用鎖能操作的一個信號量集中的大信號量。
SEMMNI:內(nèi)核中信號量集的大數(shù)量。
SEMMNS=SEMMSL*SEMMNI
SEMOPM=SEMMSL,這兩個參數(shù)一般設(shè)置為相同。
?

2.4、信號量設(shè)置計算

對于PostgreSQL數(shù)據(jù)庫來說:
SEMMNI >= ceil((max_connections + autovacuum_max_workers + 4) / 16)
SEMMSL >= 17
假設(shè)一個PG庫如下設(shè)置:
max_connections=1000, autovacuum_max_workers =3,
則這幾個參數(shù)的設(shè)置是:
SEMMNI = ceil((1000+3+4))/16)=63,因為考慮到其他進(jìn)程使用,一般設(shè)置為63+25=88
SEMMSL要求大于17,保持默認(rèn)250
SEMOPM=SEMSL=250
SEMMNS=SEMMNIMSMMSL=88250=22000
在/etc/sysctl.conf文件中添加:

kernel.sem=250  22000 250  88
運行:sysctl -p   生效

使配置生效
設(shè)置完成之后,如果啟動數(shù)據(jù)庫還是報同樣的錯誤,那么可以重啟操作系統(tǒng)再試試。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:PostgreSQL--信號量和shmall和shmmax相關(guān)設(shè)置-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article6/pojog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、虛擬主機用戶體驗、全網(wǎng)營銷推廣域名注冊、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營