溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

postgresql安裝過程中內(nèi)核資源的配置詳情

發(fā)布時間:2021-09-17 10:43:52 來源:億速云 閱讀:122 作者:chen 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章主要介紹“postgresql安裝過程中內(nèi)核資源的配置詳情”,在日常操作中,相信很多人在postgresql安裝過程中內(nèi)核資源的配置詳情問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”postgresql安裝過程中內(nèi)核資源的配置詳情”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1、共享內(nèi)存和信號量Shared Memory and Semaphores

修改/etc/sysctl.conf文件,linux一般只修改如下兩個參數(shù)即可,其中kernel.shmmax值和shared_buffers一樣,一般設(shè)置為物理內(nèi)存的40%即可,其他的參數(shù)的默認(rèn)值非常大,通常不需要更改。

kernel.shmmax=XXX

kernel.shmall=XX

SHMMAX:共享內(nèi)存段的最大大小,單位bytes

SHMALL:可用共享內(nèi)存的總數(shù),單位bytes的話值和SHMMAX一樣,單位是pages的話值等于SHMMAX/PAGE_SIZE

linux查看Block size大小的方法

tune2fs -l /dev/sda1 |grep 'Block size'

linux查看Page size大小的方法

getconf PAGESIZE

2、systemd RemoveIPC

修改/etc/systemd/logind.conf文件,增加RemoveIPC=no即可

在RHEL7.2中,systemd-logind 服務(wù)引入了一個新特性,該新特性是:當(dāng)一個user完全退出os之后,remove掉這個user所有的IPC objects。系統(tǒng)用戶除外?!跋到y(tǒng)用戶”由/etc/login.defs中的SYS_UID_MAX設(shè)置確定。該特性由/etc/systemd/logind.conf參數(shù)文件中RemoveIPC選項來控制。

3、資源限制Resource Limits

修改/etc/security/limits.conf文件,主要是限制每個用戶的進(jìn)程數(shù),每個進(jìn)程打開的文件數(shù),示例如下

postgres  soft  nproc   2047

postgres  hard  nproc   16384

postgres  soft  nofile  1024

postgres  hard  nofile  65536

4、Linux內(nèi)存過量使用Linux Memory Overcommit

修改/etc/sysctl.conf文件,增加vm.overcommit_memory=2

Linux對大部分申請內(nèi)存的請求都回復(fù)"yes",以便能跑更多更大的程序。因為申請內(nèi)存后,并不會馬上使用內(nèi)存。這種技術(shù)叫做 Overcommit。當(dāng)linux發(fā)現(xiàn)內(nèi)存不足時,會發(fā)生OOM killer(OOM=out-of-memory)。它會選擇殺死一些進(jìn)程(用戶態(tài)進(jìn)程,不是內(nèi)核線程),以便釋放內(nèi)存。

在Linux 2.4及更高版本中,默認(rèn)的虛擬內(nèi)存行為對于PostgreSQL不是最優(yōu)的。由于內(nèi)核實現(xiàn)內(nèi)存過度提交的方式,如果PostgreSQL或其他進(jìn)程的內(nèi)存需求導(dǎo)致系統(tǒng)耗盡虛擬內(nèi)存,內(nèi)核可能會終止PostgreSQL postmaster(主服務(wù)器進(jìn)程)。如果內(nèi)存緊張,增加操作系統(tǒng)的交換空間可以幫助避免這個問題,因為只有當(dāng)物理內(nèi)存和交換空間耗盡時才會調(diào)用內(nèi)存不足(out- memory, OOM)殺手。如果PostgreSQL本身是導(dǎo)致系統(tǒng)內(nèi)存不足的原因,那么可以通過更改配置來避免這個問題。最好減少max_connections,而使用外部連接池軟件。在Linux 2.6及更高版本上,可以修改內(nèi)核的行為sysctl -w vm.overcommit_memory=2。

overcommit_memory可選值:0、1、2。

0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。

1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何。

2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存 

5、大頁內(nèi)存Linux Huge Pages

系統(tǒng)支持大頁內(nèi)存的情況下,修改/etc/sysctl.conf文件,增加vm.nr_hugepages=XX,即啟用大頁內(nèi)存。

PostgreSQL中大頁內(nèi)存的默認(rèn)行為是盡可能使用它們,并在失敗時回退到正常頁面。要強(qiáng)制使用大頁內(nèi)存,可以在postgresql.conf中將huge_pages設(shè)置為on。

查看內(nèi)存是否支持大頁內(nèi)存,cat /proc/meminfo查看是否有PageTables、HugePages_Total、Hugepagesize、HugePages_Free、HugePages_Rsvd等項,如果沒有,需要內(nèi)核配置CONFIG_HUGETLBFS=y、CONFIG_HUGETLB_PAGE=y支持大內(nèi)存頁

確定vm.nr_hugepages值的方法

$ head -1 $PGDATA/postmaster.pid

4170

$ pmap 4170 | awk '/rw-s/ && /zero/ {print $2}'

6490428K

$ grep ^Hugepagesize /proc/meminfo

Hugepagesize:       2048 kB

以上6490428/2048=3170,所以編輯/etc/sysctl.conf文件修改vm.nr_hugepages=3170

oracle的算法

# grep Hugepagesize /proc/meminfo

For example, if /proc/meminfo lists the large page size as 2 MB, and the total SGA size for the instance is 1.6 GB, then set the value for the vm.nr_hugepages kernel parameter to 820 (1.6 GB / 2 MB = 819.2).

到此,關(guān)于“postgresql安裝過程中內(nèi)核資源的配置詳情”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI