- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.11.jar 来管理池连接,我使用 postgreSql 9.3。
我在 Prod 环境中每天至少收到一次这些消息:
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 212 more
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1469)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
... 215 more
Caused by: org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:712)
我的应用程序中有这个配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="org.postgresql.Driver"/>
<property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/Test"/>
<property name="user" value="postgres"/>
<property name="password" value="postgres"/>
<!-- pool sizing -->
<!-- pool sizing -->
<property name="initialPoolSize" value="32" />
<property name="minPoolSize" value="30" />
<property name="maxPoolSize" value="300" />
<property name="acquireIncrement" value="10" />
<property name="maxStatements" value="0" />
<!-- retries -->
<property name="acquireRetryAttempts" value="30" />
<property name="acquireRetryDelay" value="1000" /> <!-- 1s -->
<property name="breakAfterAcquireFailure" value="false" />
<!-- refreshing connections -->
<property name="maxIdleTime" value="180" /> <!-- 3min -->
<property name="maxConnectionAge" value="10" /> <!-- 1h -->
<!-- timeouts and testing -->
<property name="checkoutTimeout" value="0" /> <!-- 60s -->
<property name="idleConnectionTestPeriod" value="60" /> <!-- 60 -->
<property name="testConnectionOnCheckout" value="true" />
<property name="preferredTestQuery" value="SELECT 1" />
<property name="testConnectionOnCheckin" value="true" />
</bean>
</beans>
在 postgresql.conf 中我有这个配置:
max_connections = 300
shared_buffers = 32GB
我的服务器有这样的性能:24 cpu,256 GB 内存
使用该应用的用户数量在1300左右
有没有人可以帮我解决这个问题
提前谢谢你
最佳答案
有 superuser_reserved_connections
个连接槽(默认为 3 个)是为 super 用户保留的,这样他们即使在所有连接槽都被占用的情况下也可以连接。
所以您实际上只有 297 个可用插槽。
要么减少连接池的最大连接数,要么增加 PostgreSQL 中的 max_connections
。
顺便说一下,300 太高了。您应该对连接池使用低得多的设置(除非您的数据库计算机中有数百个内核)。
关于java - Caused by : org. postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication super 用户连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47651864/
我的 Graphite 中有这个配置: # go-carbon.aggregation [sum_counts] pattern = ^stats_counts.* xFilesFactor = 0
使用 React.js,假设我有一个父组件,它有一个状态列表: myList: [1, 2, 3] 我在 myList 上做了一个 .map() ,并为列表中的每个项目呈现一个新组件。所以我的父应用程
我正在尝试使用 Tortoise SVN 提交 *.csproj 文件,但得到: 提交失败!...中止提交....csproj 仍然存在冲突。 好的,那么我如何确定冲突是什么,以便我有希望解决它? 最
在我的命令式 Scala 代码中,我有一个算法: def myProcessor(val items: List) { var numProcessed = 0 while(numProces
据我所知,删除应用程序时,唯一可以留下的残余是与钥匙串(keychain)相关的,对吧? 我说的不是硬件层面的位不归零,而是软件层面的。 如果我对应用程序进行删除/全新安装,那么旧应用程序物理上唯一可
总结:我有一个 ByteBuffer,我正在其中抽取一些数据。之后,我想通过套接字发送此数据。 所以,我写了这样的代码: private static void serialize(ByteB
假设目标时间是下午 4.30,当前时间是下午 3.25,我将如何计算到达目标时间的剩余分钟数?我需要几分钟内的结果。 session_start(); $m=30; //unset($_SESSION
我正在尝试在 PowerShell 中编写一个包装函数,该函数基本上评估第一个参数,并基于该函数在计算机上运行程序。然后,包装函数的所有剩余参数都应该传递给运行的程序。 所以它应该看起来像这样: fu
我的免费试用期还剩三天。我还有很多“剩余学分”。免费试用后我是否仍然拥有这些积分,以便我可以通过将订阅切换到“即用即付”选项来保持我的东西正常运行? 最佳答案 不,一旦您的试用期结束,您剩余的积分将不
我的免费试用期还剩三天。我还有很多“剩余学分”。免费试用后我是否仍然拥有这些积分,以便我可以通过将订阅切换到“即用即付”选项来保持我的东西正常运行? 最佳答案 不,一旦您的试用期结束,您剩余的积分将不
我有一个 IObservable以及一些根据某些条件处理字符串的观察者: observable.Subscribe(s => { if (s.StartsWith("a")) {...} }); ob
我有以下代码: 这是我的代码: print (start_timestamp) start_timestamp_no_iso = datetime.strptime(start_timestamp,
这个问题在这里已经有了答案: python strip function is not giving expected output (4 个答案) 关闭 6 年前。 我有一个包含两列时间值的文本文
我有一个 HTML 网站,其中有一个页面使用 PHP 代码来查询 MySQL 数据库。该表包含 3 列(日期、时间、剩余)。根据当前日期和时间,我希望 HTML 页面返回并显示“剩余”列中的相应值。
我是 Python 的 super 新手,当我的源 csv 文件更改其格式时,我陷入了循环。日期字段现在有这样的:2020-07-22T00:00:00.000 而我想要的是这样的:2020-07-2
我们有一个 NAnt 脚本来更新我们在 TFS 中的“预构建”程序集,作为我们的 TeamCity 构建项目之一。构建由其他构建触发。它执行 TF checkout ,移动一些文件,然后执行 TF c
我正在使用 CPU 利用率为 100% 的 Google Cloud PostgreSQL。我已将实例升级为使用 2 个内核。现在该实例在 2 个 CPU 和 3.75Gb 的 RAM 上运行。该实例
我正在努力理解 flexbox 容器如何与其他块交互。我的页面上只有一个 flexbox,我可以做我想做的事。但是当我混入其他页面元素时,事情变得很奇怪。问题似乎是空间分配。 我的 flexbox 容
使用 MVC,当我从 Controller servlet 获取对 jsp 页面的响应时,URI 仍然是 servlet 的 URI。我希望显示 JSP 的 URI,它显示从 Controller s
我正在处理两个包含日期列的 csv 文件,第一个 csv 文件与我的代码配合良好,但第二个文件出现错误,显示为“ValueError:未转换的数据仍然是:09”。 请参阅下面的我的代码和屏幕截图,有人
我是一名优秀的程序员,十分优秀!