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

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

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)石門免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

修改/etc/sysctl.conf文件,linux一般只修改如下兩個(gè)參數(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ù)引入了一個(gè)新特性,該新特性是:當(dāng)一個(gè)user完全退出os之后,remove掉這個(gè)user所有的IPC objects。系統(tǒng)用戶除外?!跋到y(tǒng)用戶”由/etc/login.defs中的SYS_UID_MAX設(shè)置確定。該特性由/etc/systemd/logind.conf參數(shù)文件中RemoveIPC選項(xiàng)來控制。

3、資源限制Resource Limits

修改/etc/security/limits.conf文件,主要是限制每個(gè)用戶的進(jìn)程數(shù),每個(gè)進(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",以便能跑更多更大的程序。因?yàn)樯暾垉?nèi)存后,并不會馬上使用內(nèi)存。這種技術(shù)叫做 Overcommit。當(dāng)linux發(fā)現(xiàn)內(nèi)存不足時(shí),會發(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)核實(shí)現(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)的交換空間可以幫助避免這個(gè)問題,因?yàn)橹挥挟?dāng)物理內(nèi)存和交換空間耗盡時(shí)才會調(diào)用內(nèi)存不足(out- memory, OOM)殺手。如果PostgreSQL本身是導(dǎo)致系統(tǒng)內(nèi)存不足的原因,那么可以通過更改配置來避免這個(gè)問題。最好減少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)存申請?jiān)试S;否則,內(nèi)存申請失敗,并把錯(cuò)誤返回給應(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)行為是盡可能使用它們,并在失敗時(shí)回退到正常頁面。要強(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等項(xiàng),如果沒有,需要內(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é)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站標(biāo)題:postgresql安裝過程中內(nèi)核資源的配置詳情
網(wǎng)站網(wǎng)址:http://bm7419.com/article38/jdsesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、服務(wù)器托管面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈、微信公眾號

廣告

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

網(wǎng)站托管運(yùn)營