#!/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来停止。

实时监控MongoDB连接数和连接时长并剔除异常连接

原文地址: https://www.cveoy.top/t/topic/lfpD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录