数据库 postgresql 监控 IO 脚本
#!/bin/bash ######################################################### #查看当前1分钟负载大于50,自动kill 超10秒长查询 ######################################################## #使用awk只输出文档行数(截取第一段) n=`uptime | awk -F 'load average:' '{print $2}'|awk -F '.' '{print $1}'` RECORD_TIME=`date '+%Y-%m-%d__%H-%M-%S'` #if [[ ${n} -gt 60 ]] if [[ ${n} -gt 60 ]] then echo '一分钟负载大于等于60!!' echo "========================== $RECORD_TIME $n killed =============================" >> /opt/wallog/load_monitor65.log /usr/sbin/iotop -oP -b -n 2 >> /opt/wallog/load_monitor65.log /usr/bin/psql -Upostgres -p5432 -h127.0.0.1 -d postgres -c "select client_addr,wait_event_type,query ,query , now() - xact_start as duration ,backend_start,state,query_start,datname From pg_stat_activity where query_start<=now()- interval'9 sec' and state not in ('idle') and pid<>pg_backend_pid() order by by duration DESC; " >> /opt/wallog/load_monitor65.log psql -U postgres -h 127.0.0.1 -d postgres -c " select pg_terminate_backend(pid) From pg_stat_activity where query_start<=now()- interval'10 sec' and state not in ('idle') and pid<>pg_backend_pid() and query ilike 'select%' and usename<>'repuser'; " echo "######################## vmstat ####################" >> /opt/wallog/load_monitor65.log vmstat >> /opt/wallog/load_monitor65.log echo "######################## iostat -mtx 2 2 ####################" >> /opt/wallog/load_monitor65.log iostat -mtx 2 2 >> /opt/wallog/load_monitor65.log echo "######################## end ####################" >> /opt/wallog/load_monitor65.log else echo '一分钟负载小于60!!' fi
用一个例子来演示会更加清晰
分类:
shell
, postgresql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2021-02-26 Prometheus - grafana - 监控 nginx - grafana可视化 - 可视化Histogram
2021-02-26 nginx的QPS统计
2019-02-26 timeout可以实现当一个命令在规定时间内不返回就强制返回的功能 + 杀毒安装ClamAV nmap 速度 比Telnet 快