CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享_PostgreSQL

PostgreSQL在CentOS上部署的时候,需要设置一些操作系统的参数,官方文档上列举了一些(传送门)。除了这些,还有一些其他的设置,如单个用户允许的最大进程数,单个进程的最大句柄数等,这些一般也需要调整,否则系统会在一些条件下出现问题,或者性能下降。下面从系统资源限制类和内存参数优化类来进行说明.

系统资源限制类

1.单个用户允许的最大进程数:linux系统默认是1024,如果PG的最大连接数超过1024,则实际的连接数会小于1024(PG的postmaster进程,checkpointer进程,bgwriter进程,WAL发送进程,日志进程等会占用几个进程数,所以给客户段的连接数会小于1024),超过的连接请求会报资源不够的错误信息.所以为了避免这种情况,需要调整PG的linux用户的可以使用的进程数,一般通过limit.conf进行配置.

2.单个进程可以打开的最大文件数:linux默认是1024,在SQL很复杂,打开很多表,或者访问很多分区时,会出现句柄数不够的错误.

内存参数优化类

1.vm.dirty_background_ratio:这个参数控制当系统内存写脏的比例达到多少时,会启动后台进程将buffer刷到磁盘.默认是10%,对于大内存的机器,如超过64G,10%的内存为6.4,一次把6.4G数据写入磁盘,会瞬间产生大量磁盘IO,使系统失去响应,影响其他进程.所以一般8G以上内存的机器,推荐设置为1%.

2.vm.dirty_background_types:这个参数与上面的类似,只不过这个参数可以设置内存脏掉的绝对值.着两个参数其中一个为0,则另外一个会起作用.

下面是配置这几个参数的脚本,在CentOS 6.x上测试OK.

复制代码 代码如下:

#limit process to 4096 instead 1024,for we may have 1024+ connections
echo "postgres        soft    nproc           4096" >> /etc/security/lmits.conf
 
#for big query,pg may open more than 1024 files per session
echo "postgres        hard    nofile          65535" >> /etc/security/limits.conf
echo "postgres        soft    nofile          65535" >> /etc/security/limits.conf
 
#default is 10% of memory,to smooth the io peek value,
#set this to tune background process flush buffer more frequently
echo "vm.dirty_background_ratio=0" >> /etc/sysctl.conf
echo "vm.dirty_background_bytes=1024000000" >> /etc/sysctl.conf
 
#make the sysctl.conf setting take effect
sysctl -p
 
#make limit to take effect
/etc/init.d/sshd restart

时间: 2024-08-02 23:35:44

CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享_PostgreSQL的相关文章

为了性能,请不要在CentOS中运行Docker,尽量用Ubuntu

本文讲的是为了性能,请不要在CentOS中运行Docker,尽量用Ubuntu,[编者的话]生产环境里Docker运行在CentOS上似乎是大家的共识,但本文的作者通过自己在CentOS上使用Docker比在Ubuntu上性能缓慢的体验差异,决定转向在Ubuntu上使用Docker.你们是否对Docker运行在CentOS或Ubuntu上的性能差异有自己的见解,下面让我们看看作者的理由. 多年来,我一直是一个铁杆的CentOS用户.我很喜欢它最小安装创建的轻量环境,直观的安装过程和包管理软件.D

linux中nginx内核参数优化配置

内核参数优化配置 vi /etc/sysctl.conf 添加以下参数设置后运行命令: /sbin/sysctl -p 关于Nginx内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000 设定timewait的数量,默认是180000. net.ipv4.ip_local_port_range = 1024 65000 允许系统打开的端口范围. net.ipv4.tcp_tw_recycle = 1 启用timewait快速回收. net.ipv4.tcp_tw

修改Linux内核参数提高Nginx服务器在高并发时的性能

并发 Linux下高并发的Nginx服务器,当TCP TIME_WAIT套接字数量经常达到两.三万,服务器很容易被拖死.通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数量. vi /etc/sysctl.conf 增加以下几行: 引用 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse =

如何在SUSE Linux 10上安装Oracle:修改Linux内核参数

1 Oracle 11g 的内核要求: fs.file-max = 512 * PROCESSESkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.http://www.aliyun.com/zixun/aggregation/6133.html">ipv4.ip_local_port_range = 560.html">

在Maven2中运行单个测试用例并添加JVM参数

都说Maven2是Ant的替代品,今天稍微使用了下Maven,记录备忘. 通过Maven单独运行一个Junit测试用例(无需配置surefire): mvn -Dtest=TestXXX test 为Maven运行添加JVM参数,比如想给运行Maven的JVM分配更多内存,或者进行profiling等.有两种方法,一种是全局方法,即设置一个全局的环境变量MAVEN_OPTS. linux下可修改.profile或者.bash_profile文件:export MAVEN_OPTS=-Xmx102

Centos 中如何快速定制二进制的内核 RPM 包

随着Linux服务器越来越多了,底层系统内核想要保持版本统一就需要定制专门的二进制安装包来便捷的升级和管理. RedHat系那当然就是使用rpmbuild来做定制化管理了. 今天我们分俩个部分(root和普通用户)来讲解如何制作内核的二进制rpm包. Building主机系统环境约定: OS : CentOS release 6.6 Arch : i686 一,rpm包简单定制 注意: 这里我们首先要预留至少20GB的临时文件空间. 1.rpm 制作前的环境准备: yum -y groupins

CentOS 6.x系统升级Python到2.7版本的Shell脚本分享_linux shell

在CentOS 6.x上,默认自带的Python是2.6.x版本,这个版本的Python有点老了,比如"collections.OrderedDict"就是2.7才有的,而且著名的Python Web框架Django的新版(如:1.7)就不支持Python2.6,最低要求是2.7了.而一些公司或者共有云上的服务器就是使用CentOS6.x,所以也就有了升级Python到2.7的需求. 升级Python之前,需要先安装一些工具和软件库,否则后面安装Python或pip时可能出错. Pyt

一个监控Squid运行进程数并自动重启的简洁Shell脚本分享_linux shell

复制代码 代码如下: #!/bin/sh while sleep 30 do SquidNum=`ps -ef|grep squid|grep -v grep|wc -l` #HttpNum=`netstat -an|grep 0.0.0.0:80|grep -v grep|wc -l` #80状态 if [ $SquidNum != 3 ] ; then /etc/rc3.duid start adddate=`date +%Y-%m-%d`" "`date +%H:%M:%S` e

Linux内核参数配置文件的修改

Linux在系统运行时修改内核参数(/proc/sys与/etc/sysctl.conf),而不需 要重新引导系统,这个功能是通过/proc虚拟文件系统实现的. 在/proc/sys目录下存放着大多数的内核参数,并且设计成可以在系统运行的同 时进行更改, 可以通过更改/proc/sys中内核参数对应的文件达到修改内核参数 的目的(修改过后,保存配置文件就马上自动生效),不过重新启动机器后之前修 改的参数值会失效,所以只能是一种临时参数变更方案.(适合调试内核参数优 化值的时候使用,如果设置值有问