【问题标题】:For Cockroach DB, getting 'Caused by: org.postgresql.util.PSQLException: ERROR: root: memory budget exceeded对于 Cockroach DB,得到 'Caused by: org.postgresql.util.PSQLException: ERROR: root: memory budget exceeded
【发布时间】: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


【解决方案1】:

缓存应该如何工作,理想情况下它应该为任何新请求替换数据

此错误不涉及任何特定的缓存。它一般是指SQL模块超出其限制运行,由--max-sql-memory控制。你有真正“大”的查询吗?

连接超时是这些错误的结果吗?

我对此感到惊讶。我希望出现错误而不是超时。如果你能想出一个好的复制品,我们很乐意看看。

本地 JDBC 查询是否会影响此问题,因为那里不存在休眠缓存。

不知道,抱歉。或者我不明白这个问题。

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2015-01-19
    • 1970-01-01
    • 2020-08-02
    • 2021-09-19
    • 2020-09-16
    • 1970-01-01
    • 2019-09-08
    • 2020-08-22
    相关资源
    最近更新 更多