您好,登錄后才能下訂單哦!
這篇文章主要介紹“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>
免責(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)容。