我们正在运行一个非常重连接,插入密集的postgres数据库(我们应该已经完成了一些连接池,但现在没有时间了。)
在进行一些故障排除时,我使用netstat向我展示了postgres的连接数量。我通常会看到比postgres.conf文件中指定的更多(通过max_connections)。
即使我将max_connections设置为1000,我也会通过netstat看到1400-1600个连接。
任何人都有任何线索是怎么回事?这究竟是怎么发生的?
对此的任何见解都会很棒。
答案 0 :(得分:2)
这些连接是否已经关闭?例如,Windows不会立即关闭连接,但会将其状态更改为“TIME_WAITING。
所以连接出现在netsat中但实际上是关闭的。
只有那些显示为“ESTABLISHED”的人才是“实时”连接。
顺便说一下:你可以简单地在PostgreSQL服务器前放置一个连接池,而无需更改你的应用程序。 pgPool(或pgBouncer)将假装它们是应用程序的真正PostgreSQL服务器,并将“在其背后”进行汇集
答案 1 :(得分:0)
使用连接池。超过1000个连接将显着减慢数据库速度,即使是1000个连接,您也需要一些具有大量内核和RAM的$$$$$硬件。使用连接池效率更高。