脚本自动削减gearman任务存量

用gearman总是难免遇到client提交量大增或者worker或者网络出问题导致jobs大量积压。
作为一个懒人,总是要惦记着这事是绝不能接受的。
所以万能的shell啊,请赐予我力量吧~!

[root@a1-13-a-bce3-1 czt]# cat autoReduceJobs.sh
#!/bin/bash
host="10.10.99.31"
port=4730
reduce()
{
    #获取任务存量大于300k的方法名,nc需要取1秒的延迟,否则会没有输出。
    funcs=`printf "status\n" | nc -i 1 $host $port | awk '{if($2>300000){print $1}}'`
    for f in $funcs
    do
        #写log是个好习惯^-^
        echo "["`date +'%Y-%m-%d %H:%M:%S'`"] call gearman as fake "$f" worker to remove 20000 jobs."
        #调用gearman,领取每一个任务量过大的方法名的20k个任务
        gearman -h $host -p $port -f $f -c 20000 -w >/dev/null
    done
}
#每30秒一次
while [ true ]
do
    reduce
    sleep 30
done
[root@a1-13-a-bce3-1 czt]# nohup ./autoReduceJobs.sh >> reduce.log 2>&1 & #后台执行,注意防掉线
发表评论?

0 条评论。

发表评论


请输入正确的验证码