我有两个postgresql的云服务器,第一个运行良好,但第二个30分钟后我无法从java应用程序连接。当我从pgadmin连接时,它显示30到40个连接,在杀死这些连接后,一切都很顺利。其
配置:postgresql/9.3
最大连接数=100
shared_buffers=4GB
当同一个应用程序连接到具有相同模式的其他postgresql时,所有都会永远正常工作
配置:postgresql/9.1
最大连接数=100
shared_buffers=32MB
你能帮我理解或解决
我在一个PostgreSQL 9.3实例上工作,该实例有数百个开放连接。我同意你的观点,开放式连接本身不应该成为问题。由于我们没有太多信息,下面是如何开始故障排除的描述。
- 检查服务器日志是否有任何错误。启动连接可能存在操作系统级别的问题
- 尝试以应用程序用户的身份使用psql登录。这个问题持续存在吗?如果没有,问题不在PostgreSQL。我会仔细研究一下Java代码,看看那里是否发生了什么事情
- 请注意,psql和其他libpq操作可能无法提供完整的信息。在观看数据包捕获时,请尝试通过非SSL连接进行本地连接。在这种情况下,您可以找到(并查找)连接的SQLSTATE错误。这是因为,出于遗留和向后兼容性的原因,libpq在连接到数据库时不会将sqlstate传递给客户端应用程序
不过,我敢打赌这不是一个postgresql问题。这可能是操作系统问题。这可能是资源问题。这可能是客户端应用程序问题。