在 Redis 文档中,它明确指出vm.overcommit_memory
应该设置1
为确保后台保存更新失败:http ://redis.io/topics/faq
然而
在 postgresql 文档中它说,vm.overcommit_memory
应该设置2
为避免后主进程不会被 oom 杀手杀死:http ://www.postgresql.org/docs/9.3/static/kernel-resources.html
现在,这是自相矛盾的。我应该怎么办?
我的 redis 数据库有 20GB 的限制。服务器有 252GB 物理 RAM。Postgresql 很少使用超过 100GB 的物理内存。
PS:我在 ubuntu 14、Redis 3.0 和 Postgresql 9.3
您可能会选择 Redis 建议,因为 Ubuntu 的 PostgreSQL 软件包已经实现了文档中提到的方法,以防止不明智的 OOM 杀死 postmaster 进程。
它就在您在文档中引用的部分之后。摘自Linux 内存过量使用
在 Ubuntu 14 上,
pg_ctlcluster
启动 postgres 实例的脚本如下:所以它为
-900
邮局局长的OOM分数分配了一个固定值,并
/usr/lib/postgresql/9.3/bin/pg_config pg_config --cflags
说:所以
postmaster
OOM杀手永远不应该选择,但是子后端进程(每个连接一个)可以。