|
@@ -22,10 +22,10 @@ var EscIds map[string][]string //id区间
|
|
|
|
|
|
//根据esc数量实例数量id划段
|
|
|
func IdsRange(table string) int {
|
|
|
- start := time.Date(2015, 11, 0, 0, 0, 0, 0, time.Local)
|
|
|
+ start := time.Date(2015, 11, 3, 0, 0, 0, 0, time.Local)
|
|
|
EscIds = map[string][]string{}
|
|
|
list, _ := db.Mgo.Find("ecs", `{"Status":"Running"}`, nil, nil, false, -1, -1)
|
|
|
- ids := RangeIdsByDate(table, len(*list), start)
|
|
|
+ ids := RangeIdsByDate(len(*list), start)
|
|
|
for k, v := range *list {
|
|
|
db.Mgo.UpdateById("ecs", qu.BsonIdToSId(v["_id"]), map[string]interface{}{
|
|
|
"$set": map[string]interface{}{
|
|
@@ -71,32 +71,49 @@ func RunEcsTask() int {
|
|
|
}
|
|
|
|
|
|
//id分段
|
|
|
-func RangeIdsByDate(table string, escnum int, start time.Time) map[string][]string {
|
|
|
+func RangeIdsByDate(escnum int, start time.Time) map[string][]string {
|
|
|
ids := map[string][]string{}
|
|
|
task, _ := db.Mgo.FindById("task", qu.ObjToString(ju.Config["udptaskid"]), nil)
|
|
|
log.Println(qu.ObjToString((*task)["s_mgoaddr"]), qu.ObjToString((*task)["s_mgodb"]))
|
|
|
- DB := db.MgoFactory(1, 2, 120, qu.ObjToString((*task)["s_mgoaddr"]), qu.ObjToString((*task)["s_mgodb"]))
|
|
|
- total := DB.Count(table, `{}`)
|
|
|
+ DB := db.MgoFactory(2, 3, 120, qu.ObjToString((*task)["s_mgoaddr"]), qu.ObjToString((*task)["s_mgodb"]))
|
|
|
+ total := DB.Count("bidding", `{}`)
|
|
|
+ total_back := DB.Count("bidding_back", `{}`)
|
|
|
+ total += total_back
|
|
|
pagesize := (total + escnum - 1) / escnum
|
|
|
- log.Printf("total:%d pagesize:%d escnum:%d", total, pagesize, escnum)
|
|
|
+ log.Printf("total:%d total_back:%d pagesize:%d escnum:%d", total, total_back, pagesize, escnum)
|
|
|
+ nums := 0
|
|
|
for i := 0; i < escnum; i++ {
|
|
|
log.Println("escnum", i)
|
|
|
sid := bson.NewObjectIdWithTime(start)
|
|
|
var eid bson.ObjectId
|
|
|
var idsnum = 0
|
|
|
+ table := "bidding_back"
|
|
|
for {
|
|
|
- end := start.Add(24 * time.Hour)
|
|
|
+ tmpsid := bson.NewObjectIdWithTime(start)
|
|
|
+ end := start.Add(12 * time.Hour)
|
|
|
eid = bson.NewObjectIdWithTime(end)
|
|
|
- query := bson.M{"_id": bson.M{"$gte": sid, "$lt": eid}}
|
|
|
- count := DB.Count(table, query)
|
|
|
start = end
|
|
|
- log.Printf("i:%d count:%d", i, count)
|
|
|
- if count >= 200000 || start.Unix() > time.Now().Unix() {
|
|
|
- idsnum = count
|
|
|
+ query := bson.M{"_id": bson.M{"$gte": tmpsid, "$lt": eid}}
|
|
|
+ count := DB.Count(table, query)
|
|
|
+ log.Println(count, table, query)
|
|
|
+ if count < 1 { //校验是否切换table
|
|
|
+ tmpnum := DB.Count(table, bson.M{"_id": bson.M{"$gte": tmpsid, "$lt": bson.NewObjectIdWithTime(end.Add(24 * 10 * time.Hour))}})
|
|
|
+ if tmpnum < 1 && table != "bidding" {
|
|
|
+ table = "bidding"
|
|
|
+ start = start.Add(-12 * time.Hour)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ idsnum += count
|
|
|
+ }
|
|
|
+ log.Printf("i:%d count:%d,date:%s", i, idsnum, end.Format(qu.Date_Full_Layout))
|
|
|
+ if idsnum >= pagesize || start.Unix() > time.Now().Unix() || count > 5000000 { //测试数据count > 5000000
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+ nums += idsnum
|
|
|
ids[fmt.Sprint(i)] = []string{qu.BsonIdToSId(sid), qu.BsonIdToSId(eid), fmt.Sprint(idsnum)}
|
|
|
+ log.Println("nums", nums)
|
|
|
}
|
|
|
return ids
|
|
|
}
|