PG空闲连接对性能的影响
该系列的第一篇为:PG空闲连接的资源消耗:https://amazonaws-china.com/cn/blogs/database/resources-consumed-by-idle-postgresql-connections/讨论PG如何管理连接以及空闲连接如何消耗内存和CPU。本文讨论空闲连接对PG性能的影响。
事务率影响
PG获取数据的时候,首先看请求页在没在共享内存。如果共享内存没有请求页,则从操作系统缓存取,如果也没有,则需要请求磁盘上的数据页。共享内存最快,操作系统缓存次之,磁盘最慢。随着PG连接的增长,操作系统缓存的可用内存就会减小,从而从操作系统缓存中移除数据页。下次再进行数据页查询时就会从磁盘上请求,因此性能变得更慢。
如果PG实例的空闲内存处于低水位,就会使用swap。这也是位于磁盘上,因此也很慢。使用swap空间可帮助释放一些内存,但是如果swapped 页再次被OS请求时,会被读回,导致IO的增加。更多信息请查看swap管理:https://www.kernel.org/doc/gorman/html/understand/understand014.html
可用内存对性能的影响取决于工作负载、数据集、总共的可用内存。如果数据集比总可用内存小,空闲内存的减少不会有明显影响,若数据集比总可用内存还大,就会产生巨大影响。
性能测试
下面小节显示了通过pgbench进行的性能测试。测试中Amazon RDS for PG实例为db.m5.large,2vCPU,8GB内存。1个EBS的IO为3000IOPS。
<