postgresql - 杀死超过 4 小时的空闲连接
问题描述
我们想杀死已在 Postgres 上停留超过 4 小时的空闲连接,理想情况下,我们想创建一个 cron 来执行此操作。
我们应该在 pg_stat_activity 中查看什么字段?我们有这些:
backend_start
query_start
state_change
我们假设是 backend_start ...
然后我们可以做这样的事情:
select pg_terminate_backend(pid)
from pg_catalog.pg_stat_activity
where backend_start<CURRENT_TIME-4Hours and state='idle';
解决方案
这取决于连接规则。如果打开一个连接只是为了执行单个事务(或批处理作业提供的一组事务),您实际上可以杀死所有空闲会话。当允许连接保持打开并等待新的在线查询时,state-change
应考虑此时间戳,因为此时间戳指示连接已空闲多长时间。
推荐阅读
- php - Laravel 分页:为什么有些页面返回未定义的偏移量:0?
- python - 从组合框中选择数据位
- terraform - 地形 | 从 Cloud SQL 检索(客户端密钥)证书
- swift - 如何等待递归直到函数完成执行
- python-3.x - 非递归最高效的 Big-O 置换算法 Python3(非内置)
- .htaccess - 将对不存在的文件的任何查询重定向到一个 php 文件
- ruby-on-rails - 嵌套关联 has_many;through 不更新 collection_check_boxes
- javascript - 样式化从索引文件导入的 React 组件时出错,但直接从组件文件导入时不会出错
- r - 如何在使用 ggplot 在 R 中具有单个数据点的同时在轴上显示刻度标签?
- azure - 使用模板更新现有 VNET 的 DNS