当作为系统服务运行时,在处理多于大约125个并发连接时,您可能会遇到失败。这是由于Postgresql所依赖的一些库依赖于user32.dll,后者从内存中一块称为桌面堆(Desktop Heap)的区域中分配内存。桌面堆被分配给了每一个登录的会话,通常一个非交互的会话将会分配给512KB。每个postgres进程典型的桌面堆消耗是3.2KB,加上其他的额外开销,大约在125个连接左右时,分配的堆空间便会耗尽。当在命令行方式运行时,不会发生这种情况(更确切地说,将会在远大于此连接数时发生),因为每个交互登录会话将会分配给3MB的桌面堆。 您可以像这篇Microsoft智库文章描述的那样通过修改注册表中第三个SharedSection的值来增大非交互会话的桌面堆。注意如此操作需要非常小心,一旦指定的值过大,系统将无法启动。
原文链接:https://www.f2er.com/postgresql/195889.html