gpt4 book ai didi

java - 如果查询花费很长时间而没有任何超时异常,则使用 hibernate 执行的 Postgres 查询运行将被删除

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:48 25 4
gpt4 key购买 nike

我正在运行一个需要两个多小时的 postgres 查询。此查询是在 java 程序中使用 hibernate 执行的。大约 1.5 小时后,查询停止显示在 pg_admin 的服务器状态中。

因为查询从数据库的 Activity 查询列表中消失了,所以我期待成功或超时异常。但是,我没有得到。(无一异常(exception))并且我的线程卡在等待状态。我知道查询尚未完成,因为它应该在表中执行一些插入操作,但我无法在表中找到预期的行。

我正在使用 pgbouncer 作为连接池并且禁用了 query_timeout。如果它是 hibernate 超时,我应该得到一个异常(exception)。DB机器和Client机器(运行java程序的机器)上的操作系统参数

  • tcp_keepalive_time 为 7200(秒)
  • tcp_keepalive_intvl = 75
  • tcp_keepalive_probes = 9(探测数)两台机器都运行 RHEL 操作系统。我无法确定这个问题。

最佳答案

我发现问题是由于 TCP 连接断开而客户端仍在等待响应而导致的。

我在操作系统级别更改了以下参数:-

  • /proc/sys/net/ipv4/tcp_keepalive_time = 2700

默认值为 7200。这会导致每 2700 秒而不是 7200 秒进行一次保持 Activity 检查。

关于java - 如果查询花费很长时间而没有任何超时异常,则使用 hibernate 执行的 Postgres 查询运行将被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35177389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com