首页 > Linux, shell > 脚本自动削减gearman任务存量

脚本自动削减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 & #后台执行,注意防掉线
  1. 还没有评论
评论提交中, 请稍候...

留言

请输入正确的验证码

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks