centos 7.x 安装 postgresql 的优化设置

os: centos 7.4.1708

epel

# wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
# yum clean all  
# yum makecache 

yum

# yum install make cmake gcc gcc-c++ lrzsz git tree sysstat mpstat dstat wget bison unixODBC \
smartmontools coreutils glib2 perl perl-devel perl-ExtUtils-Embed zlib zlib-devel openldap openldap-devel flex \
readline readline-devel systemtap systemtap-sdt-devel python python-devel tcl tcl-devel sgml-common docbook* stylesheets \
openjade sgml-tools libxslt libxslt-devel libxml2 libxml2-devel openssl openssl-devel pam pam-devel libicu libicu-devel \
uuid uuid-devel jadetex bzip2 automake autoconf libtool hdparm numactl libtool-ltdl libtool-ltdl-devel
 

user

建议不管是 yum 安装还是 make 安装,都先创建用户
用户组和用户的id均为 10000 ,用户目录为 /home/postgres/,不要使用 /var/lib/pgsql/

# groupadd -g 10000 postgres;
useradd -g postgres -u 10000 postgres;
#usermod -g postgres postgres;

mkdir -p /usr/pgsql-9.6;
chown -R postgres:postgres /usr/pgsql-9.6;

mkdir -p /data/pgsql-9.6/data
chown -R postgres:postgres /data

postgres 用户的环境变量

vi /home/postgres/.bash_profile

#export LANG=zh_CN.UTF-8 
export PGHOME=/usr/pgsql-9.6 
export PGDATA=/data/pgsql-9.6/data 

#export PGDATABASE=postgres 
#export PGUSER=postgres  
#export PGPASSWORD=postgres 
#export PGPORT=5432

export MANPATH=${PGHOME}/share/man:$MANPATH
export LD_LIBRARY_PATH=${PGHOME}/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export PATH=${PGHOME}/bin:$PATH

export TEMP=/tmp
export TMPDIR=/tmp

rc.local

# vi /etc/rc.local

############################################
#禁用THP
############################################
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi


############################################
#预读块大小
############################################
/usr/sbin/blockdev --setra 16384 /dev/sda


############################################
#设置 io scheduler
############################################
# noop 
# deadline
# cfq
############################################
echo deadline > /sys/block/sda/queue/scheduler


############################################
#设置 write through
############################################
# yum install hdparm
#
#set write type 
# 0:write through
# 1:write back
# hdparm -I /dev/sda |grep "Write cache"
# hdparm -W 0 /dev/sda
# hdparm -W 1 /dev/sda
############################################
hdparm -W 0 /dev/sda 


############################################
#清空 iptables
############################################
iptables -F



# chmod u+x /etc/rc.d/rc.local

sysctl.conf

# vi /etc/sysctl.conf

kernel.shmall = 18446744073692774399    
kernel.shmmax = 18446744073692774399    
kernel.shmmni = 819200 

kernel.sem = 50100 64128000 50100 1280
#kernel.sem = 4096 2147483647 2147483646 512000 
#kernel.sem = 250 32000 100 128 #这个设置在很多场合都报错了,有公式计算

net.core.rmem_default = 262144    
net.core.rmem_max = 4194304    
net.core.wmem_default = 262144    
net.core.wmem_max = 4194304 

fs.aio-max-nr = 1048576
fs.nr_open=20480000
fs.file-max = 7672460

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv4.ip_local_port_range = 9000 65000
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl =60
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_mem = 8388608 12582912 16777216
net.ipv4.tcp_rmem = 8192 87380 16777216    
net.ipv4.tcp_wmem = 8192 65536 16777216  

vm.dirty_background_bytes = 102400000    
vm.dirty_expire_centisecs = 3000    
vm.dirty_ratio = 80    
vm.dirty_writeback_centisecs = 100


vm.overcommit_memory = 2
vm.overcommit_ratio = 90
vm.swappiness = 1

#vm.nr_hugepages = xxxx
# grep ^Hugepagesize /proc/meminfo

# sysctl -p

limits.conf

# vi /etc/security/limits.conf

root     soft nofile  655360 # The maximum number of open file descriptors
root     hard nofile  655360
postgres soft nofile  655360
postgres hard nofile  655360

root     soft nproc   655360 # The maximum number of processes available to a single user
root     hard nproc   655360
postgres soft nproc   655360
postgres hard nproc   655360

* soft memlock unlimited # The maximum size that may be locked into memory
* hard memlock unlimited
* soft core    unlimited # The maximum size of core files created
* hard core    unlimited
* soft stack   unlimited  
* hard stack   unlimited 

selinux disable

# vi /etc/selinux/config
SELINUX=DISABLED

或者

# vi /etc/sysconfig/selinux
SELINUX=DISABLED

firewalld disable

# systemctl stop firewalld.service
# systemctl disable firewalld.service

grup

# vi /etc/default/grub
ipv6.disable=1 numa=off transparent_hugepage=never elevator=deadline
# grub2-mkconfig -o /boot/grub2/grub.cfg

备注:

确认numa 已经关闭

# grep -i numa /var/log/dmesg
# cat /proc/cmdline
# numactl --hardware
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章