暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL系列05(服务器配置和客户端验证)

运维开发圈 2019-02-27
251



PostgreSQL服务器配置和客户端验证

作者博客链接: http://blog.51cto.com/liyuanjie

本节目录

  • 服务器配置和操作

  • 管理内核资源

    • 共享内存和信号量

  • Linux内核资源

  • 更改共享内存大小设置

  • 限制过度使用内存

  • 更改/proc文件系统的内容

  • 资源限制

  • 每日英语(6)

服务器配置和操作

管理内核资源

共享内存和信号量
SHMMAX    共享内存段的最大大小(字节)
SHMMIN    共享内存段的最小大小(字节)  最多32个字节。
SHMALL    可用共享内存总量(字节或页数)
SHMSEG    每个进程的最大共享内存段数
SHMMNI    系统范围内的最大共享内存段数
SEMMNI    信号量标识符的最大数量(即集合)
SEMMNS    系统范围内的最大信号量数
SEMMSL    每组的最大信号量数
SEMMAP    信号量映射中的条目数
SEMVMX    信号量的最大值

复制

PostgreSQL每个允许的连接使用一个信号量(max_connections),允许autovacuum工作进程(autovacuum_max_workers)和允许后台进程(max_worker_processes),每组16个.

使用POSIX信号量时,每个允许的连接一个信号量(max_connections),允许的autovacuum worker进程(autovacuum_max_workers)和允许的后台进程(max_worker_processes).

Linux内核资源

默认的最大段大小为32 MB,默认的最大总大小为2097152页。页面几乎总是4096字节.

复制
更改共享内存大小设置
  $ sysctl -w kernel.shmmax=17179869184
    $ sysctl -w kernel.shmall=4194304

复制
    

复制
限制过度使用内存
    $ sysctl -w vm.overcommit_memory = 2       
    或者: echo -1000 > /proc/self/oom_score_adj 

复制
    

复制
更改/proc文件系统的内容
    $ echo 17179869184 >/proc/sys/kernel/shmmax
    $ echo 4194304 >/proc/sys/kernel/shmall

复制

资源限制

有大量的shared_buffers时,使用大页面可以减少使用大量连续内存块时的开销.

估计所需的大页面数量,启动PostgreSQL而不启用大页面,并使用/proc文件系统检查postmaster的匿名共享内存段大小以及系统的大页面大小

控制登录期间设置的各种资源限制: etc/security/limits.conf

确定内核将支持的最大打开文件数: proc/sys/fs/file-max

  • 查看postmaster的PID

# head -1 $PGDATA/postmaster.pid
18635

复制
  • 检查postmaster的VmPeak值:

# grep ^VmPeak /proc/18635/status
VmPeak:      223160 kB

# pmap 18635 | awk '/rw-s/ && /zero/ {print $2}'
145064K

复制
  • 系统的大页面大小

# grep ^Hugepagesize /proc/meminfo
Hugepagesize:       2048 kB

复制
  • 计算并设置大页面大小

计算要使用的大页面大小: 大页面大小=145064/2048

# sysctl -w vm.nr_hugepages=71  //注意:71是计算出来的大页面大小.

复制
  • 要验证大量的页面分配情况使用

# grep Huge /proc/meminfo

复制
  • 配置文件开启大页面:

# vim data/postgresql.conf
huge_pages = on

复制

可能还需要vm.hugetlb_shm_group通过sysctl设置数据库服务器的操作系统用户权限来使用大页面或授予锁定内存的权限ulimit -l.

每日英语6

  • (Daily English Tips)(6)

What's your phone number?
My phone number is 614-232-6682

Call me.
My name and phone number.

Is it your phone number?
Yes.

Thank you
You're welcome.

复制


往期文章精彩推荐:

   ansible系列第一篇(安装与配置)

   ansible系列第二篇(模块使用)

   ansible系列第三篇(playbook使用)

   ansible系列第四篇(经典用法)

   ansible系列第五篇(变量)

  百度云盘命令行客户端

  感悟2018与学习方法总结

  你如何才能抢到回家的票呢?github告诉你

  pg_rman物理备份和还原

  frp实现内网穿透

  你不得不掌握的Web服务基础



文章转载自运维开发圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论