文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

postgresql安装过程中内核资源的配置详情

2024-04-02 19:55

关注

这篇文章主要介绍“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安装过程中内核资源的配置详情”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯