如何基于端口监控FreeSWITCH的Recv-Q?

如何基于端口监控FreeSWITCH的Recv-Q?

# 连接FS服务器,执行recvq接收队列监控脚本
while true; do
    /bin/bash -x recvq_monitor.sh
    sleep 3
done

# 复制新开上一个连接FS服务器的窗口,执行模拟阻塞脚本,大批量发送数据给FS服务器的指定端口,执行后回到上一窗口观察输出
/bin/bash -x  simulate_recvq.sh

recvq_monitor.sh

#!/bin/bash

# 此脚本为 recvq_monitor.sh
# 定义需要监控的端口数组
MONITOR_PORTS=(8021 3306)

# 获取当前时间戳
timestamp=$(date +"%F %T")

echo "[$timestamp] 开始端口Recv-Q监控..."

# 遍历数组
for port in "${MONITOR_PORTS[@]}"; do
    # 使用ss获取监听端口的连接信息
    ss -tnp | grep ":$port " | while read -r line; do
        # 提取Recv-Q, PID, 状态等字段
        recv_q=$(echo "$line" | awk '{print $2}')
        pid_info=$(echo "$line" | awk -F 'pid=' '{print $2}' | cut -d',' -f1)
        # 提取本地端口
        local_port=$(echo "$line" | awk '{print $4}' | awk -F':' '{print $NF}')
        # 判断Recv-Q是否大于0
        if [ "$recv_q" -gt 0 ]; then
            echo "[异常] PID: $pid_info, 端口: $local_port, Recv-Q: $recv_q"
        fi
    done
done

simulate_recvq.sh

#!/bin/bash

# 此脚本为 simulate_recvq.sh
# 目标 IP 和端口
HOST=127.0.0.1
PORT=8021

# 无限while循环写入数据,模拟堆积
(
  echo "AUTH ClueCon"
  sleep 1
  while true; do
    # 发送随机垃圾数据,每次1000KB
    head -c 1024000 /dev/urandom | base64
    sleep 0.05
  done
) | nc $HOST $PORT
# nc发送tcp长连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值