【PostgreSQL]PostgreSQL数据库层限流脚本
2022-07-22 21:05 abce 阅读(194) 评论(0) 编辑 收藏 举报1 2 3 4 5 6 7 8 9 10 11 12 13 14 | with tmp3 as ( select count (*) as cnt from pg_stat_activity WHERE pid <> pg_backend_pid() and datname= 'mypg1' and usename= 'postgres' and state= 'idle' and query like '%select now%' ) select case when cnt <= 400 then ( with tmp1 as ( select pg_terminate_backend(pid) from ( select pid from pg_stat_activity WHERE 1=2 ) as foo1) select count (*) from tmp1 ) when cnt > 400 then ( with tmp2 as ( select pg_terminate_backend(pid) from ( select pid from pg_stat_activity WHERE pid <> pg_backend_pid() and datname= 'mypg1' and usename= 'postgres' and state= 'active' and query like '%select now%' order by backend_start limit 10) as foo2) select count (*) from tmp2 ) end as kill_if_too_many_process from tmp3 \watch 1 |
作用:程序执行的语句为类似select now语句,并且该进程是active的,当这样的进程超过400个时,按照进程发起的先后顺序,先杀掉早期的进程。该语句每秒检查一次,每次发现有超过400个时,kill掉最早的10个。
注:语句内容,进程数上限,每次杀的进程数,检查时间,都可以根据自己的情况酌情修改。
原文地址:https://oracleblog.org/useful-script/script-to-limit-process-for-postgresql/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2016-07-22 Oracle官方文档在线查看
2016-07-22 Real-Time SQL Monitoring
2015-07-22 11G新特性 -- ASM的兼容性
2015-07-22 11G新特性 -- variable size extents