這篇文章主要介紹“postgresql安裝過程中內核資源的配置詳情”,在日常操作中,相信很多人在postgresql安裝過程中內核資源的配置詳情問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”postgresql安裝過程中內核資源的配置詳情”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
專注于為中小企業提供網站建設、網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業石門免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了超過千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
1、共享內存和信號量Shared Memory and Semaphores
修改/etc/sysctl.conf文件,linux一般只修改如下兩個參數即可,其中kernel.shmmax值和shared_buffers一樣,一般設置為物理內存的40%即可,其他的參數的默認值非常大,通常不需要更改。
kernel.shmmax=XXX
kernel.shmall=XX
SHMMAX:共享內存段的最大大小,單位bytes
SHMALL:可用共享內存的總數,單位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 服務引入了一個新特性,該新特性是:當一個user完全退出os之后,remove掉這個user所有的IPC objects。系統用戶除外。“系統用戶”由/etc/login.defs中的SYS_UID_MAX設置確定。該特性由/etc/systemd/logind.conf參數文件中RemoveIPC選項來控制。
3、資源限制Resource Limits
修改/etc/security/limits.conf文件,主要是限制每個用戶的進程數,每個進程打開的文件數,示例如下
postgres soft nproc 2047
postgres hard nproc 16384
postgres soft nofile 1024
postgres hard nofile 65536
4、Linux內存過量使用Linux Memory Overcommit
修改/etc/sysctl.conf文件,增加vm.overcommit_memory=2
Linux對大部分申請內存的請求都回復"yes",以便能跑更多更大的程序。因為申請內存后,并不會馬上使用內存。這種技術叫做 Overcommit。當linux發現內存不足時,會發生OOM killer(OOM=out-of-memory)。它會選擇殺死一些進程(用戶態進程,不是內核線程),以便釋放內存。
在Linux 2.4及更高版本中,默認的虛擬內存行為對于PostgreSQL不是最優的。由于內核實現內存過度提交的方式,如果PostgreSQL或其他進程的內存需求導致系統耗盡虛擬內存,內核可能會終止PostgreSQL postmaster(主服務器進程)。如果內存緊張,增加操作系統的交換空間可以幫助避免這個問題,因為只有當物理內存和交換空間耗盡時才會調用內存不足(out- memory, OOM)殺手。如果PostgreSQL本身是導致系統內存不足的原因,那么可以通過更改配置來避免這個問題。最好減少max_connections,而使用外部連接池軟件。在Linux 2.6及更高版本上,可以修改內核的行為sysctl -w vm.overcommit_memory=2。
overcommit_memory可選值:0、1、2。
0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。
1, 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。
2, 表示內核允許分配超過所有物理內存和交換空間總和的內存
5、大頁內存Linux Huge Pages
系統支持大頁內存的情況下,修改/etc/sysctl.conf文件,增加vm.nr_hugepages=XX,即啟用大頁內存。
PostgreSQL中大頁內存的默認行為是盡可能使用它們,并在失敗時回退到正常頁面。要強制使用大頁內存,可以在postgresql.conf中將huge_pages設置為on。
查看內存是否支持大頁內存,cat /proc/meminfo查看是否有PageTables、HugePages_Total、Hugepagesize、HugePages_Free、HugePages_Rsvd等項,如果沒有,需要內核配置CONFIG_HUGETLBFS=y、CONFIG_HUGETLB_PAGE=y支持大內存頁
確定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).
到此,關于“postgresql安裝過程中內核資源的配置詳情”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!
網站標題:postgresql安裝過程中內核資源的配置詳情
網站網址:http://m.2m8n56k.cn/article38/jdsesp.html
成都網站建設公司_創新互聯,為您提供定制開發、服務器托管、面包屑導航、、網站內鏈、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯