当前位置: 首页 > 编程笔记 >

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

穆铭晨
2023-03-14
本文向大家介绍CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享,包括了CentOS中运行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

 类似资料:
  • 修改内核 之前的内核实现并未使能页表机制,实际上内核是直接在物理地址空间上运行的。这样虽然比较简单,但是为了后续能够支持多个用户进程能够在内核中并发运行,满足隔离等性质,我们要先运用学过的页表知识,把内核的运行环境从物理地址空间转移到虚拟地址空间,为之后的功能打好铺垫。 更具体的,我们现在想将内核代码放在虚拟地址空间中以 0xffffffff80200000 开头的一段高地址空间中。这意味着原来放

  • 每次在PostgreSQL表上执行更新或插入操作时,我都会遇到一个“小”问题。 此脚本将提取并写入更新或插入的数据文件。 环境数据:Ubuntu 18.04(仿生海狸)、PostgreSQL 10和Python 3.6 和输出 我创建了一个PostgreSQL函数(我希望它在所有留档读数后都可以) 在此之后,创建触发器 如果我正在进行任何插入或更新,则不会发生任何事情。 作为额外的预防措施,我做了

  • 我在Spring框架中使用ehcache。我正在使用ehcache.xml初始化ehcache。然而,我想在运行时添加某些属性,如terracottaconfig。为此,我覆盖了类EhCacheManagerFactoryBean。目前,我正在覆盖这个类的方法getObject()(我不知道这是否是一个正确的覆盖,因为在使用ehcache.xml文件初始化类之前,调用了其他方法setResourc

  • 本文向大家介绍一键配置CentOS iptables防火墙的Shell脚本分享,包括了一键配置CentOS iptables防火墙的Shell脚本分享的使用技巧和注意事项,需要的朋友参考一下 手里几台VPS配置iptables太繁琐,看到了朱哥的LNMP脚本里有一个自动配置iptables防火墙的脚本,借来改了一下,给需要的人用; 只提供常用端口的设置,如果你有特殊需求只需自行添加或减少相应的端口

  • 我们已经在现有的HDP上安装了nifi(HDF服务)。安装是成功的,我可以运行nifi没有任何错误。但我在PutHDFS中遇到了一个问题 我也附上了截图。

  • 问题内容: 在我的文件中,我具有以下“脚本”配置。 这让我跑,并通过命令行。 这很棒!但理想情况下,由于界面的便捷性,我希望能够使用运行配置从WebStorm中运行这些任务。我一直无法弄清楚该怎么做。 有没有办法创建我自己的自定义运行配置或自动从中生成它们? 问题答案: 您可以为此使用Node.js运行配置。例如,对于: 要从命令行找到全局的node_modules路径,请使用“ npm root