CentOS中運行PostgreSQL需要修改的內核參數及配置腳本分享
PostgreSQL在CentOS上部署的時候,需要設置一些操作系統(tǒng)的參數,官方文檔上列舉了一些(傳送門)。除了這些,還有一些其他的設置,如單個用戶允許的最大進程數,單個進程的最大句柄數等,這些一般也需要調整,否則系統(tǒng)會在一些條件下出現問題,或者性能下降。下面從系統(tǒng)資源限制類和內存參數優(yōu)化類來進行說明.
系統(tǒng)資源限制類
1.單個用戶允許的最大進程數:linux系統(tǒng)默認是1024,如果PG的最大連接數超過1024,則實際的連接數會小于1024(PG的postmaster進程,checkpointer進程,bgwriter進程,WAL發(fā)送進程,日志進程等會占用幾個進程數,所以給客戶段的連接數會小于1024),超過的連接請求會報資源不夠的錯誤信息.所以為了避免這種情況,需要調整PG的linux用戶的可以使用的進程數,一般通過limit.conf進行配置.
2.單個進程可以打開的最大文件數:linux默認是1024,在SQL很復雜,打開很多表,或者訪問很多分區(qū)時,會出現句柄數不夠的錯誤.
內存參數優(yōu)化類
1.vm.dirty_background_ratio:這個參數控制當系統(tǒng)內存寫臟的比例達到多少時,會啟動后臺進程將buffer刷到磁盤.默認是10%,對于大內存的機器,如超過64G,10%的內存為6.4,一次把6.4G數據寫入磁盤,會瞬間產生大量磁盤IO,使系統(tǒng)失去響應,影響其他進程.所以一般8G以上內存的機器,推薦設置為1%.
2.vm.dirty_background_types:這個參數與上面的類似,只不過這個參數可以設置內存臟掉的絕對值.著兩個參數其中一個為0,則另外一個會起作用.
下面是配置這幾個參數的腳本,在CentOS 6.x上測試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
相關文章
PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列代碼示例
數據庫中主鍵的生成一般是通過序列來生成,下面這篇文章主要給大家介紹了關于PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-11-11Postgresql 存儲過程(plpgsql)兩層for循環(huán)的操作
這篇文章主要介紹了Postgresql 存儲過程(plpgsql)兩層for循環(huán)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01查看postgresql數據庫用戶系統(tǒng)權限、對象權限的方法
這篇文章主要介紹了查看postgresql數據庫用戶系統(tǒng)權限、對象權限的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12