【发布时间】:2021-03-09 04:57:46
【问题描述】:
在服务器上部署 CDB v20.2.5 后,一段时间后我们开始以非常频繁的速度收到此错误:
org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet
Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet
Caused by: org.postgresql.util.PSQLException: ERROR: root: memory budget exceeded: 40960 bytes requested, 984028160 currently allocated, 984028160 bytes in budget
我猜,这里的'bytes in budget'是指CDB的缓存,根据错误,它已经满了,它不能处理新的请求。
在这些错误之后,我们开始收到 CDB 的连接超时。
我的问题:
- 缓存应该如何工作,理想情况下它应该替换任何新请求的数据
- 连接超时是这些错误的结果吗?
- 原生 JDBC 查询是否会影响此问题,因为那里不存在休眠缓存。
注意:这里的缓存内存是 CDB 推荐的主内存的 0.25 倍
【问题讨论】:
-
1.您是否在节点启动时指定了
--max-sql-memory?如果有,价值是多少? 2. 这个集群有多大?此错误通常表明集群配置不足...例如,在每个节点的内存或 cpu 太少的集群上运行太重的工作负载。您能否提供有关您的设置的详细信息? 3. 你是如何处理连接池和资源关闭的?注意正确调整池大小并在使用后立即关闭所有 JDBC 资源。 4. 你能分享给你带来麻烦的查询和模式吗?
标签: cockroachdb