实时监控MongoDB连接数和连接时长并剔除异常连接
#!/bin/bash
while true; do # 获取当前mongo数据连接数 conn_count=$(mongo --eval 'printjson(db.serverStatus().connections)' | grep -oP '(?<="current": )[0-9]+')
# 获取当前mongo数据连接时长
conn_time=$(mongo --eval 'printjson(db.serverStatus().connections)' | grep -oP '(?<="totalTime": )[0-9]+')
# 判断连接数是否超过300
if [ $conn_count -gt 300 ]; then
# 剔除连接
mongo --eval 'db.currentOp().inprog.forEach(function(op){if(op.secs_running > 10) db.killOp(op.opid);});'
fi
# 判断连接时长是否超过10秒
if [ $conn_time -gt 10000 ]; then
# 剔除连接
mongo --eval 'db.currentOp().inprog.forEach(function(op){if(op.secs_running > 10) db.killOp(op.opid);});'
fi
# 每隔1秒监控一次
sleep 1
done
这个脚本会一直运行,可以使用Ctrl+C来停止。
原文地址: https://www.cveoy.top/t/topic/lfpD 著作权归作者所有。请勿转载和采集!