CentOS中運(yùn)行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享
PostgreSQL在CentOS上部署的時(shí)候,需要設(shè)置一些操作系統(tǒng)的參數(shù),官方文檔上列舉了一些(傳送門(mén))。除了這些,還有一些其他的設(shè)置,如單個(gè)用戶允許的最大進(jìn)程數(shù),單個(gè)進(jìn)程的最大句柄數(shù)等,這些一般也需要調(diào)整,否則系統(tǒng)會(huì)在一些條件下出現(xiàn)問(wèn)題,或者性能下降。下面從系統(tǒng)資源限制類(lèi)和內(nèi)存參數(shù)優(yōu)化類(lèi)來(lái)進(jìn)行說(shuō)明.
系統(tǒng)資源限制類(lèi)
1.單個(gè)用戶允許的最大進(jìn)程數(shù):linux系統(tǒng)默認(rèn)是1024,如果PG的最大連接數(shù)超過(guò)1024,則實(shí)際的連接數(shù)會(huì)小于1024(PG的postmaster進(jìn)程,checkpointer進(jìn)程,bgwriter進(jìn)程,WAL發(fā)送進(jìn)程,日志進(jìn)程等會(huì)占用幾個(gè)進(jìn)程數(shù),所以給客戶段的連接數(shù)會(huì)小于1024),超過(guò)的連接請(qǐng)求會(huì)報(bào)資源不夠的錯(cuò)誤信息.所以為了避免這種情況,需要調(diào)整PG的linux用戶的可以使用的進(jìn)程數(shù),一般通過(guò)limit.conf進(jìn)行配置.
2.單個(gè)進(jìn)程可以打開(kāi)的最大文件數(shù):linux默認(rèn)是1024,在SQL很復(fù)雜,打開(kāi)很多表,或者訪問(wèn)很多分區(qū)時(shí),會(huì)出現(xiàn)句柄數(shù)不夠的錯(cuò)誤.
內(nèi)存參數(shù)優(yōu)化類(lèi)
1.vm.dirty_background_ratio:這個(gè)參數(shù)控制當(dāng)系統(tǒng)內(nèi)存寫(xiě)臟的比例達(dá)到多少時(shí),會(huì)啟動(dòng)后臺(tái)進(jìn)程將buffer刷到磁盤(pán).默認(rèn)是10%,對(duì)于大內(nèi)存的機(jī)器,如超過(guò)64G,10%的內(nèi)存為6.4,一次把6.4G數(shù)據(jù)寫(xiě)入磁盤(pán),會(huì)瞬間產(chǎn)生大量磁盤(pán)IO,使系統(tǒng)失去響應(yīng),影響其他進(jìn)程.所以一般8G以上內(nèi)存的機(jī)器,推薦設(shè)置為1%.
2.vm.dirty_background_types:這個(gè)參數(shù)與上面的類(lèi)似,只不過(guò)這個(gè)參數(shù)可以設(shè)置內(nèi)存臟掉的絕對(duì)值.著兩個(gè)參數(shù)其中一個(gè)為0,則另外一個(gè)會(huì)起作用.
下面是配置這幾個(gè)參數(shù)的腳本,在CentOS 6.x上測(cè)試OK.
#limit process to 4096 instead 1024,for we may have 1024+ connections
echo "postgres soft nproc 4096" >> /etc/security/lmits.conf
#for big query,pg may open more than 1024 files per session
echo "postgres hard nofile 65535" >> /etc/security/limits.conf
echo "postgres soft nofile 65535" >> /etc/security/limits.conf
#default is 10% of memory,to smooth the io peek value,
#set this to tune background process flush buffer more frequently
echo "vm.dirty_background_ratio=0" >> /etc/sysctl.conf
echo "vm.dirty_background_bytes=1024000000" >> /etc/sysctl.conf
#make the sysctl.conf setting take effect
sysctl -p
#make limit to take effect
/etc/init.d/sshd restart
相關(guān)文章
PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列代碼示例
數(shù)據(jù)庫(kù)中主鍵的生成一般是通過(guò)序列來(lái)生成,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11Postgresql 存儲(chǔ)過(guò)程(plpgsql)兩層for循環(huán)的操作
這篇文章主要介紹了Postgresql 存儲(chǔ)過(guò)程(plpgsql)兩層for循環(huán)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01查看postgresql數(shù)據(jù)庫(kù)用戶系統(tǒng)權(quán)限、對(duì)象權(quán)限的方法
這篇文章主要介紹了查看postgresql數(shù)據(jù)庫(kù)用戶系統(tǒng)權(quán)限、對(duì)象權(quán)限的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12PostgreSQL數(shù)據(jù)庫(kù)視圖及子查詢使用操作
這篇文章主要為大家介紹了PostgreSQL數(shù)據(jù)庫(kù)視圖及子查詢的使用操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04淺談PostgreSQL消耗的內(nèi)存計(jì)算方法
這篇文章主要介紹了淺談PostgreSQL消耗的內(nèi)存計(jì)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01聊聊PostgreSql table和磁盤(pán)文件的映射關(guān)系
這篇文章主要介紹了聊聊PostgreSql table和磁盤(pán)文件的映射關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL 恢復(fù)誤刪數(shù)據(jù)的操作
這篇文章主要介紹了PostgreSQL 恢復(fù)誤刪數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL 數(shù)據(jù)同步到ES 搭建操作
這篇文章主要介紹了PostgreSQL 數(shù)據(jù)同步到ES 搭建操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01sqoop 實(shí)現(xiàn)將postgresql表導(dǎo)入hive表
這篇文章主要介紹了sqoop 實(shí)現(xiàn)將postgresql表導(dǎo)入hive表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12