那在使用PG的时候,可能很快就会体会到PG之美, 与功能强大,这里就不在多说,今天要说的是,POSTGRESQL 在高并发下,超高连接对PG的冲击,以及为什么PG 在高并发连接中,需要使用pgbouncer...多连接并不是通过内存的消耗,将PG 带入到OOM 和系统无响应的情况中, 而是随着backend变多后,内部沟通的成本变高,导致性能上的问题,所以PG在多连接中,是需要使用PGPOOL 或者 pgbouncer...之类的缓冲池来保证系统的性能,另外还有一个问题就是为什么要有这么多的连接, 这是一个DB工作者应该被问及的问题....,让数据库使用有限的连接去处理更多的任务,接入更多的要工作的连接就是解决,少连接和应用要多连接的之间矛盾,所谓的连接复用.
2 如果你经常发现你的连接状态在 idle in transaction 这也就说明经常有大事务长时间在等待什么...,这也是解决问题的一个点,为什么一个事务要长时间霸占连接,并等待.
3 一些连接,只连接不清理不关闭,可能是程序设计有失误,这样的情况我们可以设置对某个数据库的连接的 statement_timeout