主页>技术知识>详情

业务负载并不高,该怎么加速我的PostgreSQL数据库实例?

villain/2022-02-23/69阅读 /0评论
业务负载并不高,该怎么加速我的PostgreSQL数据库实例?简介:请问我的PostgreSQL实例陆续接收了一千多个活跃连接,随着连接增加系统越来越慢了,但是业务负载并不高,该怎么加速我的PostgreSQL数据库实例?解决方法:<p>你可以考虑 使用连接池,具体的可选软件有 pgpool,p

业务负载并不高,该怎么加速我的PostgreSQL数据库实例?

请问我的PostgreSQL实例陆续接收了一千多个活跃连接,随着连接增加系统越来越慢了,但是业务负载并不高,该怎么加速我的PostgreSQL数据库实例?


解决方法:

你可以考虑 使用连接池,具体的可选软件有 pgpool,pgbounce 等等。

这个是使用PG优化实践中的常见问题。


如果是mysql我会看慢查询日志


换pg14最快的方案。


加速,不会带来质的改变。

排查“长连接”才是,优选“短连接”,增大缓存,分表分库,在一个局域网下…


该评论暂时无法显示

数据连接可以在服务端设置。客户端访问数据库,通常会采用两种方式:

1.每次操作都会connection open close数据库。

2.另一种则是第一次connection open后将连接维持在内存中,直到客户端应用程序结束最后relase object时 close dispose

如果是第一种情况瞬时产生多个数据连接的情况是存在的,但多数情况下由于使用完就断开连接数不可能高。

而楼主描述的问题明显是第二种,即多个客户端一直连接着不关闭,这样连接数再多也不够用。

而且楼主描述的情况应该存在两种情况:1)客户端数量特别多而且经常是使用不关闭。2)客户端数量不多但每个客户端都开了多个线程同时去连接数据库。

作为服务端解决问题很简单:

1.查看postgre提供的log查看哪些session一直连接,并减少session超时时间。这样会由服务端自动释放掉更多超时的连接。

2.约束客户端使用完后就断开。

3.减少客户端强行断开而没有调用close 和dispose方法。客户端连接到sql服务时就会产生一个session,用于维持连接,而这个session并不会在客户端一断就释放,而需要等到设置的超时时间后才释放,而这样会导致无用的连接。

这都是在原有基础上加速postgre的方法,还有一个方式就是使用HA,即数据库主从,保持数据库的高可用。当主库连接升高时将余下传话连接到新的数据库。

本文用户投稿或网站收集转载,如有侵权请联系本站。