|
@@ -38,17 +38,16 @@ var Auto = func() {
|
|
|
//if taskNum <= 0 {
|
|
|
//计算释放,发送udp
|
|
|
ccnum := compute()
|
|
|
- log.Println("ccnum:", ccnum, ", len(config.CID):", len(config.CID), config.CID)
|
|
|
+ log.Println("ccnum:", ccnum, ", len(config.CID):", len(cluster.CID), cluster.CID)
|
|
|
if ccnum <= 0 {
|
|
|
- if len(config.CID) == 0 {
|
|
|
- log.Println("当前实例为空,无需释放", config.CID, )
|
|
|
+ if len(cluster.CID) == 0 {
|
|
|
+ log.Println("当前实例为空,无需释放", cluster.CID, )
|
|
|
return
|
|
|
}
|
|
|
- if ccnum == 0 && len(config.CID) > 0 {
|
|
|
- log.Println("释放所有实例", config.CID)
|
|
|
- for tmpIid, _ := range config.CID {
|
|
|
+ if ccnum == 0 && len(cluster.CID) > 0 {
|
|
|
+ log.Println("释放所有实例", cluster.CID)
|
|
|
+ for tmpIid, _ := range cluster.CID {
|
|
|
ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
- mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
log.Println("5分钟后释放实例", tmpIid)
|
|
|
config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
|
|
|
IP: net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
|
|
@@ -56,22 +55,19 @@ var Auto = func() {
|
|
|
})
|
|
|
go func(tmpIid string) {
|
|
|
time.Sleep(time.Minute * 5)
|
|
|
+ mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
cluster.DeleteInstance(tmpIid)
|
|
|
log.Println("5分钟后释放实例完成", tmpIid)
|
|
|
}(tmpIid)
|
|
|
}
|
|
|
- config.Sys.Lock()
|
|
|
- config.CID = make(map[string]string)
|
|
|
- config.Sys.Unlock()
|
|
|
} else {
|
|
|
var tmpnum int
|
|
|
- for k, _ := range config.CID {
|
|
|
+ for k, _ := range cluster.CID {
|
|
|
if ccnum >= tmpnum {
|
|
|
return
|
|
|
}
|
|
|
tmpIid := k
|
|
|
ttt := mongodb.FindOne("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
- mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
log.Println("5分钟后释放实例", tmpIid)
|
|
|
config.Udpclient.WriteUdp([]byte("5分钟后释放实例"), mu.OP_DELETE_DOWNLOADERCODES, &net.UDPAddr{
|
|
|
IP: net.ParseIP(util.ObjToString((*ttt)["ip_nw"])),
|
|
@@ -79,21 +75,19 @@ var Auto = func() {
|
|
|
})
|
|
|
go func(tmpIid string) {
|
|
|
time.Sleep(time.Minute * 5)
|
|
|
+ mongodb.Del("ocr_ecs", bson.M{"InstanceId": tmpIid})
|
|
|
cluster.DeleteInstance(tmpIid)
|
|
|
log.Println("5分钟后释放实例完成", tmpIid)
|
|
|
}(tmpIid)
|
|
|
tmpnum--
|
|
|
- config.Sys.Lock()
|
|
|
- delete(config.CID, k)
|
|
|
- config.Sys.Unlock()
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+ cluster.DescribeInstances()
|
|
|
return
|
|
|
}
|
|
|
//}
|
|
|
- if len(config.CID) >= util.IntAll(config.Sysconfig["pernum"]) {
|
|
|
- log.Println("实例申请上限,当前实例:", config.CID)
|
|
|
+ if len(cluster.CID) >= util.IntAll(config.Sysconfig["pernum"]) {
|
|
|
+ log.Println("实例申请上限,当前实例:", cluster.CID)
|
|
|
escObject := mongodb.Find("ocr_ecs", bson.M{"TaskName": "ocr_task_arr", "OcrTaskStatus": "none"}, bson.M{"_id": -1}, nil, false, -1, -1)
|
|
|
log.Println("实例未部署数量", len(*escObject))
|
|
|
if escObject != nil || len(*escObject) > 0 {
|
|
@@ -111,11 +105,6 @@ var Auto = func() {
|
|
|
if isok2 && isok3 {
|
|
|
(*escObject)[i]["OcrTaskStatus"] = "successful"
|
|
|
mongodb.Update("ocr_ecs", bson.M{"_id": (*escObject)[i]["_id"]}, (*escObject)[i], true, false)
|
|
|
- config.Sys.Lock()
|
|
|
- if config.CID["InstanceId"] == "" {
|
|
|
- config.CID["InstanceId"] = tmpip
|
|
|
- }
|
|
|
- config.Sys.Unlock()
|
|
|
log.Println((*escObject)[i]["_id"], tmpip, "部署成功")
|
|
|
} else {
|
|
|
log.Println(tmpip, "部署异常,"+tmpstr)
|
|
@@ -133,7 +122,7 @@ var Auto = func() {
|
|
|
log.Println("申请实例")
|
|
|
now := time.Now()
|
|
|
hours := time.Date(now.Year(), now.Month(), now.Day(), 20, 0, 0, 0, now.Location()).Sub(now).Hours()
|
|
|
- cluster.RunInstances("ocr_task_arr", "8", "false", ccnum, int(math.Round(hours)))
|
|
|
+ cluster.RunInstances("ocr_task_arr", "8", "false", util.IntAll(config.Sysconfig["pernum"]) - len(cluster.CID), int(math.Round(hours)))
|
|
|
log.Println("实例申请成功")
|
|
|
DynamicTask() //动态任务
|
|
|
log.Println("申请实例结束")
|
|
@@ -148,7 +137,7 @@ func DoCMD(ip string) bool {
|
|
|
return cluster.RunSsh(ip)
|
|
|
}
|
|
|
func DynamicTask() {
|
|
|
- time.Sleep(time.Second * 30)
|
|
|
+ time.Sleep(time.Second * 20)
|
|
|
cluster.DescribeInstances() //查询多台实例的详细信息
|
|
|
escObject := mongodb.Find("ocr_ecs", bson.M{"TaskName": "ocr_task_arr", "OcrTaskStatus": "none"}, bson.M{"_id": -1}, nil, false, -1, -1)
|
|
|
log.Println("实例未部署数量", len(*escObject))
|
|
@@ -170,8 +159,8 @@ func DynamicTask() {
|
|
|
(*escObject)[i]["OcrTaskStatus"] = "successful"
|
|
|
mongodb.Update("ocr_ecs", bson.M{"_id": (*escObject)[i]["_id"]}, (*escObject)[i], true, false)
|
|
|
config.Sys.Lock()
|
|
|
- if config.CID[InstanceId] == "" && InstanceId != "" {
|
|
|
- config.CID[InstanceId] = tmpip
|
|
|
+ if cluster.CID[InstanceId] == "" && InstanceId != "" {
|
|
|
+ cluster.CID[InstanceId] = tmpip
|
|
|
}
|
|
|
config.Sys.Unlock()
|
|
|
log.Println((*escObject)[i]["_id"], tmpip, "部署成功")
|
|
@@ -227,12 +216,12 @@ func compute() int {
|
|
|
log.Println(496, sum, "<=", util.IntAll(config.Sysconfig["accumulated_task_lowlimit"]))
|
|
|
return 0
|
|
|
}
|
|
|
- mtmm := float64(overNum) / float64(nowtime-stime) / float64(len(config.CID)+3) //每台每秒
|
|
|
+ mtmm := float64(overNum) / float64(nowtime-stime) / float64(len(cluster.CID)+3) //每台每秒
|
|
|
if mtmm <= 0 {
|
|
|
- log.Println(501, overNum, int(nowtime-stime), (len(config.CID) + 3))
|
|
|
+ log.Println(501, overNum, int(nowtime-stime), (len(cluster.CID) + 3))
|
|
|
return 0
|
|
|
}
|
|
|
- cc := float64(sum)/float64(util.IntAll(config.Sysconfig["corntime_consuming"]))/mtmm - float64(len(config.CID)) - 3
|
|
|
+ cc := float64(sum)/float64(util.IntAll(config.Sysconfig["corntime_consuming"]))/mtmm - float64(len(cluster.CID)) - 3
|
|
|
log.Println("overNum:", overNum, ",hs:", int(nowtime-stime), ",mtms:", mtmm, ",sum:", sum, cc)
|
|
|
if cc > util.Float64All(config.Sysconfig["pernum"]) {
|
|
|
return util.IntAll(config.Sysconfig["pernum"])
|