Postgresql
docker 中 postgres 數據庫的 /dev/shm 大小建議
我們在 docker 容器中有 postgresql 11.7 數據庫。
我們遇到了一個問題
"pq: could not resize shared memory segment "/PostgreSQL.XXX" to XXX bytes: No space left on device"
,在此處進行了描述。解決方案有幫助,我們不再有問題了。但是我們應該為帶有 Postgres 的 docker 容器的 shm_size 設置哪個大小?
有什麼推薦嗎?我們如何計算 shm_size 的“最佳大小”?
有兩件事使用共享記憶體:
- 在伺服器啟動時分配的共享記憶體。這由幾個部分組成,但最大的份額是
shared_buffers
數據記憶體。因此,您必須擁有比這更多的共享記憶體。
- 由並行查詢分配的共享記憶體段,用於在並行工作人員之間進行通信。
它們的大小取決於傳輸的數據,並且可以分配其中的幾個,因此這是一種更難控制的資源。
在記憶體受限的系統上,我建議您禁用並行查詢。它使查詢更快,但每個查詢使用更多資源,因此整體吞吐量沒有提高。如果您想在單個查詢上投入大量資源,這很好。
要禁用並行查詢,請設置
max_parallel_workers
為 0。