PostgreSQL存储过程运行超5分钟无法返回的问题求助
PostgreSQL存储过程长休眠后无法返回客户端问题
我创建了一个简单的PostgreSQL存储过程,用于根据传入参数休眠指定分钟数,代码如下:
create procedure sleep_test(delay_minutes numeric) language plpgsql as $$ BEGIN RAISE NOTICE 'Starting procedure. Sleeping for % minutes...', delay_minutes; PERFORM pg_sleep(delay_minutes * 60); -- Function call is in seconds RAISE NOTICE 'Finished sleeping.'; END; $$;
测试情况:4分钟休眠
执行语句:
call sleep_test(4)
在工作表中运行该存储过程4分钟时一切正常,过程在pg_stat_activity中的状态为active,运行4分钟后返回至调用工作表。
测试情况:5分钟及以上休眠
执行语句:
call sleep_test(5)
但当运行时长为5分钟及以上时,过程会运行5分钟(pg_stat_activity中状态为active),之后状态变为idle,且不会返回至调用工作表,从工作表视角来看,该过程似乎一直在运行。
数据库配置(供参考)
- server_version: 12.22
- statement_timeout: 0
- idle_in_transaction_session_timeout: 1d
测试所用客户端(均出现相同问题)
- Datagrip 2025.1 查询控制台
- 使用psycopg2 2.9.9的Python 3.9脚本
数据库服务器信息
这是一个AWS Postgres RDS数据库,暂不清楚如何在AWS中查看具体的操作系统及版本。
内容的提问来源于stack exchange,提问作者Rumtis
相关产品推荐
相关产品推荐

