PG(二)_PostgreSQL服务器选择与配置

硬件、存储和文件系统选择

  • 磁盘建议选择SSD磁盘,其次是机械硬盘
  • 如果CPU支持numa模式,建议关闭。

pg用0号cpu启动时,cpu0对应的内存就会大量使用,内存回收时也会优先回收cpu0对应的内存。
当被换出页被访问时,就会出现响应时间变慢的问题,引起性能严重抖动。关闭numa模式,内存地
位就平等了,就不会出现上述问题。

  • 存储阵列级别建议选择raid,其次是raid5.

核心数据库选择raid10,非核心压力不大的数据库从成本考虑可以使用raid5.

  • 推荐使用逻辑卷LVM管理,便于拓展
  • 文件系统推荐选择xfs,其次是ext4

xfs性能更好。ext4有免费恢复软件,但数据库安全一般采用数据备份(异地备份)的方式保护。

  • 网卡上建议多网卡绑定,分别连接到不同数据库,避免单点故障导致数据库无法连接

系统内核参数调整

推荐配置,支持CentOS 6、7
$ vim /etc/sysctl.conf

# 配置信号集。
# 650为信号集数量;162500为总共有多少信号量;
# 第一个250为每个信号集有多少个信号量;该配置应大于等于17
# 第二个250为同一个操作最大可以操作多少个信号量,该值应与第一个值一致。该值一般等于用户连接数/16
kernel.sem = 250 162500 250 650 
# 共享内存页数,linux默认共享内存页是4k,所以需要大于等于shmmax/4kB
kernel.shmall = 107374182 
# 共享内存最大值,单位为字节
kernel.shmmax = 274877906944
# 配置共享内存段数量,每个pg数据库集群至少2个共享内存段
kernel.shammni = 819200
# 配置共享内存页一共有多少个2M的内存页,需大于数据库分配的共享内存
vm.hr_hugepages=
# 回收计算内存还是非计算内存,0为非计算内存,1为计算内存
vm.swappiness = 0
# 配置申请内存策略。该配置默认值为0,即申请内存可以超过物理内存总数,存在oom-killer杀进程的风险;
# 2为不可以超分配策略
vm.overcommit_memory = 2
# 配置可分配内存比例。可分配内存=物理内存*百分比+swap。
# 一般128G,swap为16G,配置比例约为85%,最多分配为124G
vm.overcommit_ratio=50 
vm.drity_background_ratio = 1 # 超过1%时在后台回收内存
vm.drity_ratio = 2 # 超过2%开始回收内存

# 开启tcp连接复用功能,允许time_wait sockets重新用于新的tcp连接
net.ipv4.tcp_tw_reuse = 1
# 开启tcp连接的time_wait sockets快速回收
net.ipv4.tcp_tw_recycle = 1
# 禁用时间戳。由于时间戳用于避免序列号的绕卷。但如果客户端和服务器同时开启时间戳,可能导致无法建立tcp连接
net.ipv4.tcp_timestamps = 0

设置系统资源限制

$ vi /etc/security/limits.conf

# 配置可打开文件数
*soft nofile 1024000  
*hard nofile 1024000
# 配置进程数配置
*soft nproc unlimited
*hard nproc unlimited
# 配置core dump文件大小
*soft core unlimited
*hard core unlimited
# 配置锁定内存的大小
*soft memlock unlimited
*hard memlock unlimited

20-nproc.conf优先级高于limits.conf,因此修改limits.conf后还需修改20-nproc.conf,
否则对nproc的仍受限于20-nproc.conf.
`$ vi /etc/security/limits.d/20-nproc.conf

设置SELINUX

建议禁用selinux
vi /etc/sysconfig/selinux

SELINUX = disabled
SELINUXTYPE = targeted

设置防火墙

建议按照业务场景设置,不需要就删除所有策略,并关闭服务

$ /sbin/iptables -P INPUT_ACCEPT # 设置默认接收所有请求
$ /sbin/iptables -F  # 清除防火墙规则
$ systemctl disable firewalld # 禁止防火墙自启动
$ systemctl stop firewallld # 关闭防火墙

你可能感兴趣的:(#,Postgres,linux,postgresql)