Răsfoiți Sursa

添加es操作

renjiaojiao 3 ani în urmă
părinte
comite
2ee7fe46d7

+ 13 - 5
rpc/knowledge/etc/knowledge.yaml

@@ -2,7 +2,7 @@ Name: knowledge.rpc
 ListenOn: 127.0.0.1:8080
 Etcd:
   Hosts:
-    - 192.168.3.240:2379
+    - 192.168.3.206:2379
   Key: knowledge.rpc
 WebRpcPort: 8014
 MysqlMain:
@@ -13,8 +13,16 @@ MysqlMain:
   maxOpenConns: 5
   maxIdleConns: 5
 Es:
-  addr: http://192.168.3.206:9800
+  addr: http://192.168.3.204:1500
   size: 5
-  index: smart
-  type: smart
-Segment: http://192.168.3.204:8080/api/segment
+  index: smart_v6
+  type: smart_v
+Segment: http://192.168.3.204:9070/api/segment
+
+TestConf:
+  Etcd:
+    Hosts:
+      - 192.168.3.206:2379
+    Key: knowledge.rpc
+CalleeId: knowledge.rpc
+Node: 1

+ 1 - 0
rpc/knowledge/init/init.go

@@ -45,6 +45,7 @@ func init() {
 	es := C.Es
 	if es.Addr != "" {
 		log.Println("--初始化 elasticsearch--")
+		log.Println(es.Addr, es.Size)
 		elastic.InitElasticSize(es.Addr, es.Size)
 	}
 

+ 1 - 0
rpc/knowledge/internal/config/config.go

@@ -11,4 +11,5 @@ type Config struct {
 	MysqlMain  entity.MysqlMainStruct
 	Es         entity.EsStruct
 	Segment    string
+	TestConf   zrpc.RpcClientConf
 }

+ 3 - 5
rpc/knowledge/internal/logic/findanswerlogic.go

@@ -10,7 +10,6 @@ import (
 	"knowledgeBase/rpc/knowledge/internal/svc"
 	"knowledgeBase/rpc/knowledge/knowledgeclient"
 	"knowledgeBase/rpc/knowledge/util"
-	"strconv"
 )
 
 type FindAnswerLogic struct {
@@ -28,10 +27,9 @@ func NewFindAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FindAn
 }
 
 func (l *FindAnswerLogic) FindAnswer(in *knowledgeclient.FindAnswerReq) (*knowledgeclient.FindAnswerResp, error) {
-	// todo: add your logic here and delete this line
 	var question *knowledgeclient.Question
-	tenantId := strconv.Itoa(int(in.TenantId))
-	query := util.DSL4SmartResponse(in.Question, tenantId, int(in.Type))
+	//组装es query
+	query := util.DSL4SmartResponse(in.Question, in.TenantId, int(in.Type))
 	fmt.Println("query:", query)
 	res := elastic.Get(C.Es.Index, C.Es.Type, query)
 	if res != nil && len(*res) > 0 {
@@ -42,7 +40,7 @@ func (l *FindAnswerLogic) FindAnswer(in *knowledgeclient.FindAnswerReq) (*knowle
 	}
 	fmt.Println("根据问题匹配答案:", question)
 	return &knowledgeclient.FindAnswerResp{
-		ErrorCode: 1,
+		ErrorCode: 0,
 		ErrorMsg:  "请求成功",
 		Data:      question,
 	}, nil

+ 41 - 15
rpc/knowledge/internal/logic/knowledgeaddlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"context"
 
 	"database/sql"
@@ -32,52 +33,77 @@ type Question struct {
 	KeyWords string `json:"keyWords"`
 }
 
-// 知识新增
+// KnowledgeAdd 知识新增
 func (l *KnowledgeAddLogic) KnowledgeAdd(in *knowledgeclient.AddRequest) (*knowledgeclient.AddResponse, error) {
 	// todo: add your logic here and delete this line
 	result := &knowledgeclient.AddResponse{}
 	//先查找知识库Id
-	query := map[string]interface{}{"state": 1, "appid": in.AppId, "tenant_id": in.TenantId}
+	query := map[string]interface{}{"status": 1, "appid": in.AppId, "tenant_id": in.TenantId}
+	log.Println(query)
 	datalist := Mysql.Find(util.KNOWLEDGE, query, "id", "", -1, -1)
 	if datalist != nil && *datalist != nil && len(*datalist) > 0 {
-		fool := Mysql.ExecTx("创建其他订单生成订单信息和合同信息", func(tx *sql.Tx) bool {
+		//问题进行分词
+		keywords := util.HttpDo(in.Question)
+		log.Println("分词", keywords)
+		nowTime := time.Now().Local().Format(util.Date_Full_Layout)
+		var answerId int64
+		fool := Mysql.ExecTx("添加知识", func(tx *sql.Tx) bool {
 			//插入答案
 			answerData := map[string]interface{}{
 				"knowledge_id":  (*datalist)[0]["id"],
 				"status":        1,
-				"create_time":   time.Now().Local().Format(util.Date_Full_Layout),
-				"update_time":   time.Now().Local().Format(util.Date_Full_Layout),
+				"create_time":   nowTime,
+				"update_time":   nowTime,
 				"create_person": in.Person,
 				"content":       in.Answer,
 			}
-			answer_id := Mysql.Insert(util.ANSWER, answerData)
-			if answer_id <= 0 {
+			answerId = Mysql.Insert(util.ANSWER, answerData)
+			if answerId <= 0 {
 				return false
 			}
 			//插入问题
-			//先分词
-			keywords := util.HttpDo(in.Question)
 			questionData := map[string]interface{}{
-				"answer_id": answer_id,
-				"content":   1,
+				"answer_id": answerId,
+				"content":   in.Question,
 				"keywords":  keywords,
 			}
-			question_id := Mysql.Insert(util.QUESTION, questionData)
-			if question_id <= 0 {
+			questionId := Mysql.Insert(util.QUESTION, questionData)
+			if questionId <= 0 {
 				return false
 			}
 			return true
 		})
 		if fool {
-			result.ErrorCode = 0
+			//插入es
+			knowledge := map[string]interface{}{
+				"knowledge_id":  (*datalist)[0]["id"],
+				"status":        1,
+				"create_time":   nowTime,
+				"create_person": in.Person,
+				"answer":        in.Answer,
+				"question":      in.Question,
+				"keywords":      keywords,
+				"answer_id":     answerId,
+				"tenant_id":     in.TenantId,
+			}
+			b := elastic.Save(C.Es.Index, C.Es.Type, knowledge)
+			log.Println("存es", b)
+			if b {
+				result.ErrorCode = 0
+				result.ErrorMsg = "插入数据成功"
+			} else {
+				result.ErrorCode = -1
+				result.ErrorMsg = "插入es失败"
+			}
+
 		} else {
 			result.ErrorCode = -1
 			result.ErrorMsg = "新建失败"
 		}
 	} else {
-		log.Println("租户不存在")
 		result.ErrorCode = -1
 		result.ErrorMsg = "租户不存在"
 	}
+	log.Println(result)
 	return result, nil
 }

+ 0 - 61
rpc/knowledge/internal/logic/knowledgeditlogic.go

@@ -1,61 +0,0 @@
-package logic
-
-import (
-	"context"
-	"github.com/zeromicro/go-zero/core/logx"
-	. "knowledgeBase/rpc/knowledge/init"
-	"knowledgeBase/rpc/knowledge/internal/svc"
-	"knowledgeBase/rpc/knowledge/knowledgeclient"
-	"knowledgeBase/rpc/knowledge/util"
-	"time"
-)
-
-type KnowledgEditLogic struct {
-	ctx    context.Context
-	svcCtx *svc.ServiceContext
-	logx.Logger
-}
-
-func NewKnowledgEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *KnowledgEditLogic {
-	return &KnowledgEditLogic{
-		ctx:    ctx,
-		svcCtx: svcCtx,
-		Logger: logx.WithContext(ctx),
-	}
-}
-
-// 知识编辑
-func (l *KnowledgEditLogic) KnowledgEdit(in *knowledgeclient.KnowledgeEntity) (*knowledgeclient.AddResponse, error) {
-	// todo: add your logic here and delete this line
-	result := &knowledgeclient.AddResponse{}
-	//修改答案
-	answerUpdate := map[string]interface{}{
-		"update_time": time.Now().Local().Format(util.Date_Full_Layout),
-		"content":     in.Answer,
-	}
-	if in.State == 0 {
-		answerUpdate["state"] = 0
-	}
-	ok := Mysql.Update(util.ANSWER, map[string]interface{}{"id": in.AnswerId}, answerUpdate)
-	keywords := util.HttpDo(in.Question)
-	questionUpdate := map[string]interface{}{
-		"content":  1,
-		"keywords": keywords,
-	}
-	if !ok {
-		result.ErrorCode = -1
-		result.ErrorMsg = "答案修改失败"
-		return result, nil
-	}
-	//修改问题
-	ok = Mysql.Update(util.QUESTION, map[string]interface{}{"answerId": in.AnswerId}, questionUpdate)
-	if in.State != 0 {
-		//修改es数据
-	}
-	if !ok {
-		result.ErrorCode = -1
-		result.ErrorMsg = "问题修改失败"
-		return result, nil
-	}
-	return result, nil
-}

+ 81 - 0
rpc/knowledge/internal/logic/knowledgeeditlogic.go

@@ -0,0 +1,81 @@
+package logic
+
+import (
+	elastic "app.yhyue.com/moapp/jybase/esv1"
+	"context"
+	"database/sql"
+	"github.com/zeromicro/go-zero/core/logx"
+	. "knowledgeBase/rpc/knowledge/init"
+	"knowledgeBase/rpc/knowledge/internal/svc"
+	"knowledgeBase/rpc/knowledge/knowledgeclient"
+	"knowledgeBase/rpc/knowledge/util"
+	"time"
+)
+
+type KnowledgeEditLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewKnowledgeEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *KnowledgeEditLogic {
+	return &KnowledgeEditLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+// KnowledgeEdit 知识编辑
+func (l *KnowledgeEditLogic) KnowledgeEdit(in *knowledgeclient.KnowledgeEditReq) (*knowledgeclient.AddResponse, error) {
+	// todo: add your logic here and delete this line
+	result := &knowledgeclient.AddResponse{}
+	//修改答案
+	answerUpdate := map[string]interface{}{
+		"update_time": time.Now().Local().Format(util.Date_Full_Layout),
+		"content":     in.Answer,
+	}
+	if in.State == 0 {
+		answerUpdate["state"] = 0
+	}
+	//获取问题分词
+	keywords := util.HttpDo(in.Question)
+	fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
+		ok1 := Mysql.UpdateByTx(tx, util.ANSWER, map[string]interface{}{"id": in.AnswerId}, answerUpdate)
+
+		//修改问题
+		questionUpdate := map[string]interface{}{
+			"content":  in.Question,
+			"keywords": keywords,
+		}
+		ok2 := Mysql.UpdateByTx(tx, util.QUESTION, map[string]interface{}{"answerId": in.AnswerId}, questionUpdate)
+		return ok1 && ok2
+	})
+
+	if in.State != 0 && fool {
+		//修改es数据
+		knowledge := map[string]interface{}{
+			"knowledge_id":  in.KnowledgeId,
+			"status":        1,
+			"create_time":   time.Now().Local().Format(util.Date_Full_Layout),
+			"create_person": in.Person,
+			"answer":        in.Answer,
+			"question":      in.Question,
+			"keywords":      keywords,
+			"answer_id":     in.AnswerId,
+			"tenant_id":     in.TenantId,
+		}
+		ok := elastic.UpdateNewDoc(C.Es.Index, C.Es.Type, knowledge)
+		if ok {
+			result.ErrorCode = 0
+			result.ErrorMsg = "修改问题成功"
+		} else {
+			result.ErrorCode = -1
+			result.ErrorMsg = "修改es问题失败"
+		}
+	} else {
+		result.ErrorCode = -1
+		result.ErrorMsg = "修改mysql问题失败"
+	}
+	return result, nil
+}

+ 9 - 5
rpc/knowledge/internal/logic/knowledgeinfologic.go

@@ -24,20 +24,24 @@ func NewKnowledgeInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Kno
 	}
 }
 
-// 知识详情
-
+// KnowledgeInfo 知识详情
 func (l *KnowledgeInfoLogic) KnowledgeInfo(in *knowledgeclient.KnowledgeEntity) (*knowledgeclient.InfoResponse, error) {
 	// todo: add your logic here and delete this line
 	//答案问题详情
 	result := &knowledgeclient.InfoResponse{}
-	sql := "SELECT     b.content as answer ,c.content as question ,b.id  FROM      ? b     LEFT JOIN ? c ON b.id = c.answer_id WHERE     b.`status` =1 "
-	datalist := Mysql.SelectBySql(sql, util.ANSWER, util.QUESTION, in.AnswerId)
+	sql := "SELECT b.content as answer,c.content as question,b.id,b.knowledge_id  FROM " + util.ANSWER +
+		" b LEFT JOIN " + util.QUESTION + " c ON b.id = c.answer_id WHERE b.`status` =1 "
+	datalist := Mysql.SelectBySql(sql, in.AnswerId)
 	if datalist != nil && *datalist != nil && len(*datalist) > 0 {
 		knowledge := knowledgeclient.KnowledgeEntity{}
 		knowledge.Answer = quitl.ObjToString((*datalist)[0]["answer"])
 		knowledge.Question = quitl.ObjToString((*datalist)[0]["question"])
 		knowledge.AnswerId = quitl.Int64All((*datalist)[0]["id"])
 		result.Data = &knowledge
+		result.ErrorCode = 0
+	} else {
+		result.ErrorCode = -1
+		result.ErrorMsg = "查询出错"
 	}
-	return &knowledgeclient.InfoResponse{}, nil
+	return result, nil
 }

+ 6 - 4
rpc/knowledge/internal/logic/knowledgelistlogic.go

@@ -24,14 +24,16 @@ func NewKnowledgeListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Kno
 	}
 }
 
-// 知识列表
+// KnowledgeList 知识列表
 func (l *KnowledgeListLogic) KnowledgeList(in *knowledgeclient.ListRequest) (*knowledgeclient.ListResponse, error) {
 	// todo: add your logic here and delete this line
 	result := &knowledgeclient.ListResponse{}
-	knowledgeList := []*knowledgeclient.KnowledgeEntity{}
+	var knowledgeList []*knowledgeclient.KnowledgeEntity
 	//列表数据
-	sql := "SELECT     b.content as answer ,c.content as question ,b.id  FROM     ? a     LEFT JOIN ? b ON a.id = b.knowledge_id     LEFT JOIN ? c ON b.id = c.answer_id WHERE     b.`status` =1 and a.tenant_id=? limit ?,?"
-	datalist := Mysql.SelectBySql(sql, util.KNOWLEDGE, util.ANSWER, util.QUESTION, in.TenantId, in.PageIndex, in.PageSize)
+	sql := "SELECT b.content as answer,c.content as question,b.id  FROM " + util.KNOWLEDGE +
+		" a LEFT JOIN " + util.ANSWER + " b ON a.id = b.knowledge_id LEFT JOIN " + util.QUESTION +
+		" c ON b.id = c.answer_id WHERE b.`status` =1 and a.tenant_id=? limit ?,?"
+	datalist := Mysql.SelectBySql(sql, in.TenantId, in.PageIndex, in.PageSize)
 	if datalist != nil && *datalist != nil && len(*datalist) > 0 {
 		for _, value := range *datalist {
 			knowledge := knowledgeclient.KnowledgeEntity{}

+ 17 - 31
rpc/knowledge/internal/logic/recommendanswerlogic.go

@@ -4,16 +4,13 @@ import (
 	cm "app.yhyue.com/moapp/jybase/common"
 	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"context"
-	"encoding/json"
 	"github.com/zeromicro/go-zero/core/logx"
 	. "knowledgeBase/rpc/knowledge/init"
 	"knowledgeBase/rpc/knowledge/internal/svc"
-	"knowledgeBase/rpc/knowledge/knowledge"
 	"knowledgeBase/rpc/knowledge/knowledgeclient"
 	"knowledgeBase/rpc/knowledge/util"
 	"log"
 	"strconv"
-	"strings"
 )
 
 type RecommendAnswerLogic struct {
@@ -31,46 +28,35 @@ func NewRecommendAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *R
 }
 
 func (l *RecommendAnswerLogic) RecommendAnswer(in *knowledgeclient.FindAnswerReq) (*knowledgeclient.RecommendAnswerResp, error) {
-	var knowledges []*knowledge.Question
+	var (
+		keyWords    = ""
+		searchField = `"_id","answer","questions"`
+		answers     []*knowledgeclient.Question
+		result      = &knowledgeclient.RecommendAnswerResp{}
+	)
 	//根据问题进行分词
-	kwResp := util.HttpDo(in.Question)
-	var kwMap []map[string]interface{}
-	err := json.Unmarshal([]byte(kwResp), &kwMap)
-	if err != nil {
-		log.Println("推荐答案获取分词解码出错", err)
-		return nil, err
-	}
-	var keyWords = ""
-	if kwMap != nil && len(kwMap) > 0 {
-		for k, v := range kwMap {
-			if strings.Contains(v["nature"].(string), "n") && len(v["word"].(string)) > 3 {
-				if k > 0 && len(keyWords) > 1 {
-					keyWords += " "
-				}
-				keyWords += v["word"].(string)
-			}
-		}
-	}
-	//fmt.Println("关键字:", kws)
-	var searchField = `"_id","answer","questions"`
+	keyWords = util.HttpDo(in.Question)
+	log.Println("问题分词关键字:", keyWords)
 	if keyWords != "" {
 		var query = util.DSL4SearchByKwsOrid(keyWords, strconv.Itoa(int(in.TenantId)))
 		res := elastic.GetAllByNgram(C.Es.Index, C.Es.Type, query, "", "", searchField, 0, 3, 0, false)
 		//log.Println("link_obj:", link_obj)
 		if res != nil && len(*res) > 0 {
 			for _, val := range *res {
-				knowledges = append(knowledges, &knowledge.Question{
+				answers = append(answers, &knowledgeclient.Question{
 					XId:      cm.ObjToString(val["_id"]),
 					Question: cm.ObjToString(val["question"]),
 					Answer:   cm.ObjToString(val["answer"]),
 				})
 			}
 		}
+		result.ErrorCode = 0
+		result.ErrorMsg = "请求成功"
+		result.Data = answers
+	} else {
+		result.ErrorCode = -1
+		result.ErrorMsg = "分词出错"
+		result.Data = answers
 	}
-
-	return &knowledgeclient.RecommendAnswerResp{
-		ErrorCode: 0,
-		ErrorMsg:  "请求成功",
-		Data:      knowledges,
-	}, nil
+	return result, nil
 }

+ 9 - 9
rpc/knowledge/internal/server/knowledgeserver.go

@@ -5,10 +5,10 @@ package server
 
 import (
 	"context"
+	"knowledgeBase/rpc/knowledge/knowledgeclient"
 
 	"knowledgeBase/rpc/knowledge/internal/logic"
 	"knowledgeBase/rpc/knowledge/internal/svc"
-	"knowledgeBase/rpc/knowledge/knowledge"
 )
 
 type KnowledgeServer struct {
@@ -22,37 +22,37 @@ func NewKnowledgeServer(svcCtx *svc.ServiceContext) *KnowledgeServer {
 }
 
 // 知识新增
-func (s *KnowledgeServer) KnowledgeAdd(ctx context.Context, in *knowledge.AddRequest) (*knowledge.AddResponse, error) {
+func (s *KnowledgeServer) KnowledgeAdd(ctx context.Context, in *knowledgeclient.AddRequest) (*knowledgeclient.AddResponse, error) {
 	l := logic.NewKnowledgeAddLogic(ctx, s.svcCtx)
 	return l.KnowledgeAdd(in)
 }
 
 // 知识列表
-func (s *KnowledgeServer) KnowledgeList(ctx context.Context, in *knowledge.ListRequest) (*knowledge.ListResponse, error) {
+func (s *KnowledgeServer) KnowledgeList(ctx context.Context, in *knowledgeclient.ListRequest) (*knowledgeclient.ListResponse, error) {
 	l := logic.NewKnowledgeListLogic(ctx, s.svcCtx)
 	return l.KnowledgeList(in)
 }
 
 // 知识编辑
-func (s *KnowledgeServer) KnowledgEdit(ctx context.Context, in *knowledge.KnowledgeEntity) (*knowledge.AddResponse, error) {
-	l := logic.NewKnowledgEditLogic(ctx, s.svcCtx)
-	return l.KnowledgEdit(in)
+func (s *KnowledgeServer) KnowledgeEdit(ctx context.Context, in *knowledgeclient.KnowledgeEditReq) (*knowledgeclient.AddResponse, error) {
+	l := logic.NewKnowledgeEditLogic(ctx, s.svcCtx)
+	return l.KnowledgeEdit(in)
 }
 
 // 知识详情
-func (s *KnowledgeServer) KnowledgeInfo(ctx context.Context, in *knowledge.KnowledgeEntity) (*knowledge.InfoResponse, error) {
+func (s *KnowledgeServer) KnowledgeInfo(ctx context.Context, in *knowledgeclient.KnowledgeEntity) (*knowledgeclient.InfoResponse, error) {
 	l := logic.NewKnowledgeInfoLogic(ctx, s.svcCtx)
 	return l.KnowledgeInfo(in)
 }
 
 // 根据问题匹配答案
-func (s *KnowledgeServer) FindAnswer(ctx context.Context, in *knowledge.FindAnswerReq) (*knowledge.FindAnswerResp, error) {
+func (s *KnowledgeServer) FindAnswer(ctx context.Context, in *knowledgeclient.FindAnswerReq) (*knowledgeclient.FindAnswerResp, error) {
 	l := logic.NewFindAnswerLogic(ctx, s.svcCtx)
 	return l.FindAnswer(in)
 }
 
 // 推荐答案
-func (s *KnowledgeServer) RecommendAnswer(ctx context.Context, in *knowledge.FindAnswerReq) (*knowledge.RecommendAnswerResp, error) {
+func (s *KnowledgeServer) RecommendAnswer(ctx context.Context, in *knowledgeclient.FindAnswerReq) (*knowledgeclient.RecommendAnswerResp, error) {
 	l := logic.NewRecommendAnswerLogic(ctx, s.svcCtx)
 	return l.RecommendAnswer(in)
 }

+ 30 - 21
rpc/knowledge/knowledge.proto

@@ -13,9 +13,9 @@ message Question {
 message AddRequest {
   string question = 1;
   string answer = 2;
-  string tenantId=3;
-  string appId=4;
-  string person=5;//人员姓名
+  string tenantId = 3;
+  string appId = 4;
+  string person = 5;//人员姓名
 }
 
 message AddResponse{
@@ -44,36 +44,45 @@ message RecommendAnswerResp{
 }
 
 message ListRequest  {
-  	int64 pageSize = 1;//每页数据量,默认10
-  	int64 pageIndex = 2;//页码;默认第一页
-  	int64 tenantId = 3;//租户id
+  int64 pageSize = 1;//每页数据量,默认10
+  int64 pageIndex = 2;//页码;默认第一页
+  int64 tenantId = 3;//租户id
 }
 message ListResponse  {
-   int64 error_code = 1; //响应代码
-   string error_msg = 2; //响应消息
-   repeated  KnowledgeEntity data = 3; //响应内容
+  int64 error_code = 1; //响应代码
+  string error_msg = 2; //响应消息
+  repeated  KnowledgeEntity data = 3; //响应内容
 }
 message KnowledgeEntity{
-     string question = 1; //问题
-     string answer = 2;//答案
-     int64 answerId=3;//答案标识
-     int64 state=4;//知识状态0无效1有效
-     string person=5;//人员姓名
+  string question = 1; //问题
+  string answer = 2;//答案
+  int64 answerId = 3;//答案标识
+  int64 state = 4;//知识状态0无效1有效
+  string person = 5;//人员姓名
+}
+message KnowledgeEditReq{
+  string question = 1; //问题
+  string answer = 2;//答案
+  int64 answerId = 3;//答案标识
+  int64 state = 4;//知识状态0无效1有效
+  string person = 5;//人员姓名
+  int64 knowledgeId = 6;//知识库id
+  int64 tenantId = 7;//租户id
 }
 message InfoResponse  {
-   int64 error_code = 1; //响应代码
-   string error_msg = 2; //响应消息
-   KnowledgeEntity data = 3; //响应内容
+  int64 error_code = 1; //响应代码
+  string error_msg = 2; //响应消息
+  KnowledgeEntity data = 3; //响应内容
 }
 
 service knowledge {
   //知识新增
   rpc KnowledgeAdd(AddRequest) returns(AddResponse);
- //知识列表
+  //知识列表
   rpc KnowledgeList(ListRequest) returns(ListResponse);
- //知识编辑
-  rpc KnowledgEdit(KnowledgeEntity) returns(AddResponse);
- //知识详情
+  //知识编辑
+  rpc KnowledgeEdit(KnowledgeEditReq) returns(AddResponse);
+  //知识详情
   rpc KnowledgeInfo(KnowledgeEntity) returns(InfoResponse);
   //根据问题匹配答案
   rpc FindAnswer(FindAnswerReq) returns(FindAnswerResp);

+ 181 - 60
rpc/knowledge/knowledge/knowledge.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.15.1
+// 	protoc-gen-go v1.27.1
+// 	protoc        v3.19.4
 // source: knowledge.proto
 
 package knowledge
@@ -631,6 +631,101 @@ func (x *KnowledgeEntity) GetPerson() string {
 	return ""
 }
 
+type KnowledgeEditReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Question    string `protobuf:"bytes,1,opt,name=question,proto3" json:"question,omitempty"`        //问题
+	Answer      string `protobuf:"bytes,2,opt,name=answer,proto3" json:"answer,omitempty"`            //答案
+	AnswerId    int64  `protobuf:"varint,3,opt,name=answerId,proto3" json:"answerId,omitempty"`       //答案标识
+	State       int64  `protobuf:"varint,4,opt,name=state,proto3" json:"state,omitempty"`             //知识状态0无效1有效
+	Person      string `protobuf:"bytes,5,opt,name=person,proto3" json:"person,omitempty"`            //人员姓名
+	KnowledgeId int64  `protobuf:"varint,6,opt,name=knowledgeId,proto3" json:"knowledgeId,omitempty"` //知识库id
+	TenantId    int64  `protobuf:"varint,7,opt,name=tenantId,proto3" json:"tenantId,omitempty"`       //租户id
+}
+
+func (x *KnowledgeEditReq) Reset() {
+	*x = KnowledgeEditReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_knowledge_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *KnowledgeEditReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KnowledgeEditReq) ProtoMessage() {}
+
+func (x *KnowledgeEditReq) ProtoReflect() protoreflect.Message {
+	mi := &file_knowledge_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KnowledgeEditReq.ProtoReflect.Descriptor instead.
+func (*KnowledgeEditReq) Descriptor() ([]byte, []int) {
+	return file_knowledge_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *KnowledgeEditReq) GetQuestion() string {
+	if x != nil {
+		return x.Question
+	}
+	return ""
+}
+
+func (x *KnowledgeEditReq) GetAnswer() string {
+	if x != nil {
+		return x.Answer
+	}
+	return ""
+}
+
+func (x *KnowledgeEditReq) GetAnswerId() int64 {
+	if x != nil {
+		return x.AnswerId
+	}
+	return 0
+}
+
+func (x *KnowledgeEditReq) GetState() int64 {
+	if x != nil {
+		return x.State
+	}
+	return 0
+}
+
+func (x *KnowledgeEditReq) GetPerson() string {
+	if x != nil {
+		return x.Person
+	}
+	return ""
+}
+
+func (x *KnowledgeEditReq) GetKnowledgeId() int64 {
+	if x != nil {
+		return x.KnowledgeId
+	}
+	return 0
+}
+
+func (x *KnowledgeEditReq) GetTenantId() int64 {
+	if x != nil {
+		return x.TenantId
+	}
+	return 0
+}
+
 type InfoResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -644,7 +739,7 @@ type InfoResponse struct {
 func (x *InfoResponse) Reset() {
 	*x = InfoResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_knowledge_proto_msgTypes[9]
+		mi := &file_knowledge_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -657,7 +752,7 @@ func (x *InfoResponse) String() string {
 func (*InfoResponse) ProtoMessage() {}
 
 func (x *InfoResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_knowledge_proto_msgTypes[9]
+	mi := &file_knowledge_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -670,7 +765,7 @@ func (x *InfoResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use InfoResponse.ProtoReflect.Descriptor instead.
 func (*InfoResponse) Descriptor() ([]byte, []int) {
-	return file_knowledge_proto_rawDescGZIP(), []int{9}
+	return file_knowledge_proto_rawDescGZIP(), []int{10}
 }
 
 func (x *InfoResponse) GetErrorCode() int64 {
@@ -763,42 +858,55 @@ var file_knowledge_proto_rawDesc = []byte{
 	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x49, 0x64,
 	0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
 	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x22, 0x79,
-	0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d,
-	0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a,
-	0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61,
-	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c,
-	0x61, 0x74, 0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x6e, 0x74,
-	0x69, 0x74, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x9a, 0x03, 0x0a, 0x09, 0x6b, 0x6e,
-	0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x4b, 0x6e, 0x6f, 0x77, 0x6c,
-	0x65, 0x64, 0x67, 0x65, 0x41, 0x64, 0x64, 0x12, 0x14, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e,
-	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
-	0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
-	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74,
-	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
-	0x45, 0x64, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e,
-	0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a,
-	0x15, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65,
-	0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x1a, 0x16, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x46, 0x69,
-	0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c,
-	0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65,
-	0x71, 0x1a, 0x18, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e,
-	0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x52,
-	0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x17,
-	0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6e,
-	0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77,
-	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x6b, 0x6e, 0x6f, 0x77,
-	0x6c, 0x65, 0x64, 0x67, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x22, 0xce,
+	0x01, 0x0a, 0x10, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x64, 0x69, 0x74,
+	0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x16, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x73, 0x77, 0x65,
+	0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x6e, 0x73, 0x77, 0x65,
+	0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72,
+	0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x49, 0x64,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
+	0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18,
+	0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22,
+	0x79, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1b,
+	0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2d, 0x0a, 0x04, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x6d, 0x70,
+	0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x9c, 0x03, 0x0a, 0x09, 0x6b,
+	0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x4b, 0x6e, 0x6f, 0x77,
+	0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x64, 0x64, 0x12, 0x14, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c,
+	0x61, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15,
+	0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64,
+	0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+	0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
+	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64,
+	0x67, 0x65, 0x45, 0x64, 0x69, 0x74, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+	0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45, 0x64, 0x69, 0x74, 0x52,
+	0x65, 0x71, 0x1a, 0x15, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x64,
+	0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f,
+	0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x6d,
+	0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x45,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
+	0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a,
+	0x0a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x74, 0x65,
+	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65,
+	0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e,
+	0x46, 0x69, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49,
+	0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65,
+	0x72, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6e,
+	0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x6d,
+	0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x41,
+	0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x6b,
+	0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -813,7 +921,7 @@ func file_knowledge_proto_rawDescGZIP() []byte {
 	return file_knowledge_proto_rawDescData
 }
 
-var file_knowledge_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_knowledge_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
 var file_knowledge_proto_goTypes = []interface{}{
 	(*Question)(nil),            // 0: template.Question
 	(*AddRequest)(nil),          // 1: template.AddRequest
@@ -824,7 +932,8 @@ var file_knowledge_proto_goTypes = []interface{}{
 	(*ListRequest)(nil),         // 6: template.ListRequest
 	(*ListResponse)(nil),        // 7: template.ListResponse
 	(*KnowledgeEntity)(nil),     // 8: template.KnowledgeEntity
-	(*InfoResponse)(nil),        // 9: template.InfoResponse
+	(*KnowledgeEditReq)(nil),    // 9: template.KnowledgeEditReq
+	(*InfoResponse)(nil),        // 10: template.InfoResponse
 }
 var file_knowledge_proto_depIdxs = []int32{
 	0,  // 0: template.FindAnswerResp.data:type_name -> template.Question
@@ -833,14 +942,14 @@ var file_knowledge_proto_depIdxs = []int32{
 	8,  // 3: template.InfoResponse.data:type_name -> template.KnowledgeEntity
 	1,  // 4: template.knowledge.KnowledgeAdd:input_type -> template.AddRequest
 	6,  // 5: template.knowledge.KnowledgeList:input_type -> template.ListRequest
-	8,  // 6: template.knowledge.KnowledgEdit:input_type -> template.KnowledgeEntity
+	9,  // 6: template.knowledge.KnowledgeEdit:input_type -> template.KnowledgeEditReq
 	8,  // 7: template.knowledge.KnowledgeInfo:input_type -> template.KnowledgeEntity
 	3,  // 8: template.knowledge.FindAnswer:input_type -> template.FindAnswerReq
 	3,  // 9: template.knowledge.RecommendAnswer:input_type -> template.FindAnswerReq
 	2,  // 10: template.knowledge.KnowledgeAdd:output_type -> template.AddResponse
 	7,  // 11: template.knowledge.KnowledgeList:output_type -> template.ListResponse
-	2,  // 12: template.knowledge.KnowledgEdit:output_type -> template.AddResponse
-	9,  // 13: template.knowledge.KnowledgeInfo:output_type -> template.InfoResponse
+	2,  // 12: template.knowledge.KnowledgeEdit:output_type -> template.AddResponse
+	10, // 13: template.knowledge.KnowledgeInfo:output_type -> template.InfoResponse
 	4,  // 14: template.knowledge.FindAnswer:output_type -> template.FindAnswerResp
 	5,  // 15: template.knowledge.RecommendAnswer:output_type -> template.RecommendAnswerResp
 	10, // [10:16] is the sub-list for method output_type
@@ -965,6 +1074,18 @@ func file_knowledge_proto_init() {
 			}
 		}
 		file_knowledge_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*KnowledgeEditReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_knowledge_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*InfoResponse); i {
 			case 0:
 				return &v.state
@@ -983,7 +1104,7 @@ func file_knowledge_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_knowledge_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   10,
+			NumMessages:   11,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
@@ -1014,7 +1135,7 @@ type KnowledgeClient interface {
 	//知识列表
 	KnowledgeList(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
 	//知识编辑
-	KnowledgEdit(ctx context.Context, in *KnowledgeEntity, opts ...grpc.CallOption) (*AddResponse, error)
+	KnowledgeEdit(ctx context.Context, in *KnowledgeEditReq, opts ...grpc.CallOption) (*AddResponse, error)
 	//知识详情
 	KnowledgeInfo(ctx context.Context, in *KnowledgeEntity, opts ...grpc.CallOption) (*InfoResponse, error)
 	//根据问题匹配答案
@@ -1049,9 +1170,9 @@ func (c *knowledgeClient) KnowledgeList(ctx context.Context, in *ListRequest, op
 	return out, nil
 }
 
-func (c *knowledgeClient) KnowledgEdit(ctx context.Context, in *KnowledgeEntity, opts ...grpc.CallOption) (*AddResponse, error) {
+func (c *knowledgeClient) KnowledgeEdit(ctx context.Context, in *KnowledgeEditReq, opts ...grpc.CallOption) (*AddResponse, error) {
 	out := new(AddResponse)
-	err := c.cc.Invoke(ctx, "/template.knowledge/KnowledgEdit", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/template.knowledge/KnowledgeEdit", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1092,7 +1213,7 @@ type KnowledgeServer interface {
 	//知识列表
 	KnowledgeList(context.Context, *ListRequest) (*ListResponse, error)
 	//知识编辑
-	KnowledgEdit(context.Context, *KnowledgeEntity) (*AddResponse, error)
+	KnowledgeEdit(context.Context, *KnowledgeEditReq) (*AddResponse, error)
 	//知识详情
 	KnowledgeInfo(context.Context, *KnowledgeEntity) (*InfoResponse, error)
 	//根据问题匹配答案
@@ -1111,8 +1232,8 @@ func (*UnimplementedKnowledgeServer) KnowledgeAdd(context.Context, *AddRequest)
 func (*UnimplementedKnowledgeServer) KnowledgeList(context.Context, *ListRequest) (*ListResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method KnowledgeList not implemented")
 }
-func (*UnimplementedKnowledgeServer) KnowledgEdit(context.Context, *KnowledgeEntity) (*AddResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method KnowledgEdit not implemented")
+func (*UnimplementedKnowledgeServer) KnowledgeEdit(context.Context, *KnowledgeEditReq) (*AddResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method KnowledgeEdit not implemented")
 }
 func (*UnimplementedKnowledgeServer) KnowledgeInfo(context.Context, *KnowledgeEntity) (*InfoResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method KnowledgeInfo not implemented")
@@ -1164,20 +1285,20 @@ func _Knowledge_KnowledgeList_Handler(srv interface{}, ctx context.Context, dec
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Knowledge_KnowledgEdit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(KnowledgeEntity)
+func _Knowledge_KnowledgeEdit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(KnowledgeEditReq)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(KnowledgeServer).KnowledgEdit(ctx, in)
+		return srv.(KnowledgeServer).KnowledgeEdit(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/template.knowledge/KnowledgEdit",
+		FullMethod: "/template.knowledge/KnowledgeEdit",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(KnowledgeServer).KnowledgEdit(ctx, req.(*KnowledgeEntity))
+		return srv.(KnowledgeServer).KnowledgeEdit(ctx, req.(*KnowledgeEditReq))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -1249,8 +1370,8 @@ var _Knowledge_serviceDesc = grpc.ServiceDesc{
 			Handler:    _Knowledge_KnowledgeList_Handler,
 		},
 		{
-			MethodName: "KnowledgEdit",
-			Handler:    _Knowledge_KnowledgEdit_Handler,
+			MethodName: "KnowledgeEdit",
+			Handler:    _Knowledge_KnowledgeEdit_Handler,
 		},
 		{
 			MethodName: "KnowledgeInfo",

+ 8 - 7
rpc/knowledge/knowledgeclient/knowledge.go

@@ -13,15 +13,16 @@ import (
 )
 
 type (
+	KnowledgeEditReq    = knowledge.KnowledgeEditReq
 	Question            = knowledge.Question
-	AddResponse         = knowledge.AddResponse
 	FindAnswerReq       = knowledge.FindAnswerReq
-	ListResponse        = knowledge.ListResponse
+	RecommendAnswerResp = knowledge.RecommendAnswerResp
+	ListRequest         = knowledge.ListRequest
 	KnowledgeEntity     = knowledge.KnowledgeEntity
 	AddRequest          = knowledge.AddRequest
+	AddResponse         = knowledge.AddResponse
 	FindAnswerResp      = knowledge.FindAnswerResp
-	RecommendAnswerResp = knowledge.RecommendAnswerResp
-	ListRequest         = knowledge.ListRequest
+	ListResponse        = knowledge.ListResponse
 	InfoResponse        = knowledge.InfoResponse
 
 	Knowledge interface {
@@ -30,7 +31,7 @@ type (
 		// 知识列表
 		KnowledgeList(ctx context.Context, in *ListRequest) (*ListResponse, error)
 		// 知识编辑
-		KnowledgEdit(ctx context.Context, in *KnowledgeEntity) (*AddResponse, error)
+		KnowledgeEdit(ctx context.Context, in *KnowledgeEditReq) (*AddResponse, error)
 		// 知识详情
 		KnowledgeInfo(ctx context.Context, in *KnowledgeEntity) (*InfoResponse, error)
 		// 根据问题匹配答案
@@ -63,9 +64,9 @@ func (m *defaultKnowledge) KnowledgeList(ctx context.Context, in *ListRequest) (
 }
 
 // 知识编辑
-func (m *defaultKnowledge) KnowledgEdit(ctx context.Context, in *KnowledgeEntity) (*AddResponse, error) {
+func (m *defaultKnowledge) KnowledgeEdit(ctx context.Context, in *KnowledgeEditReq) (*AddResponse, error) {
 	client := knowledge.NewKnowledgeClient(m.cli.Conn())
-	return client.KnowledgEdit(ctx, in)
+	return client.KnowledgeEdit(ctx, in)
 }
 
 // 知识详情

+ 76 - 0
rpc/knowledge/logs/access.log

@@ -13,3 +13,79 @@
 >>>>>>> d81a3e824563ad13a0defcc6df0b53a6e6cd6f4c
 {"@timestamp":"2022-06-17T14:41:35.451+08:00","level":"info","content":"info--日志记录"}
 {"@timestamp":"2022-06-17T14:41:35.451+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T14:26:42.498+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T14:26:42.498+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T14:28:17.983+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T14:28:17.983+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T14:35:05.711+08:00","level":"info","duration":"6.2ms","content":"127.0.0.1:55392 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"b920ded8cd51b3592866ec8db92c423a","span":"0502a7ad7be297c5"}
+{"@timestamp":"2022-06-20T14:45:59.598+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T14:45:59.598+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T14:46:14.108+08:00","level":"info","duration":"2.2ms","content":"127.0.0.1:55524 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"e507aa73f741d8e018b305ba308ad250","span":"a6ba1d23b67f3dee"}
+{"@timestamp":"2022-06-20T14:46:42.836+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T14:46:42.836+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T14:51:52.267+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T14:51:52.267+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:04:18.925+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:04:18.925+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:06:11.738+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:06:11.738+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:15:41.057+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:15:41.057+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:17:55.510+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:17:55.510+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:19:35.723+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:19:35.723+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:19:47.768+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:19:47.768+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:22:18.620+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:22:18.620+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:22:28.377+08:00","level":"info","duration":"107.0ms","content":"127.0.0.1:56331 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"2dd0c0dce685402d94a71b4c62566d9b","span":"c537ebc6845f9414"}
+{"@timestamp":"2022-06-20T15:23:51.279+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:23:51.279+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:25:01.483+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:25:01.483+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:25:11.113+08:00","level":"info","duration":"23.5ms","content":"127.0.0.1:56419 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"3877d87e368d599ec60d8a023cd7b99f","span":"c4041f36b361a500"}
+{"@timestamp":"2022-06-20T15:25:51.152+08:00","level":"info","duration":"15.4ms","content":"127.0.0.1:56436 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"44b1aae7d86c2f085341c1969aed1296","span":"27f01908f5c75924"}
+{"@timestamp":"2022-06-20T15:26:09.446+08:00","level":"info","duration":"20.0ms","content":"127.0.0.1:56444 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"d22292abab38a551bf5cb1613049a826","span":"461e426a37c16b8f"}
+{"@timestamp":"2022-06-20T15:26:49.808+08:00","level":"info","duration":"18.6ms","content":"127.0.0.1:56455 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"16f3e6b5797312b682bf701dd73fc92a","span":"50af3293e8afcbad"}
+{"@timestamp":"2022-06-20T15:27:11.137+08:00","level":"info","duration":"19.9ms","content":"127.0.0.1:56469 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"fd578db296af927aca200c3c81034431","span":"a3221524eb2bef04"}
+{"@timestamp":"2022-06-20T15:27:38.242+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:27:38.242+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:28:50.836+08:00","level":"info","duration":"88.1ms","content":"127.0.0.1:56499 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"dcce6c6b050ef043b4251fb37f479e4a","span":"a58b7b1765022812"}
+{"@timestamp":"2022-06-20T15:38:01.360+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:38:01.360+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:55:28.205+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T15:55:28.205+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T15:55:39.670+08:00","level":"info","duration":"30.3ms","content":"127.0.0.1:57118 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"5d30e432bd0ea7a1f4be48025403f392","span":"14f08cb25dc1b4b1"}
+{"@timestamp":"2022-06-20T15:57:39.852+08:00","level":"info","duration":"15.3ms","content":"127.0.0.1:57149 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"14599747c54c4ec4f7d21b6af144ff68","span":"2a0c2d4bd07cd826"}
+{"@timestamp":"2022-06-20T16:04:10.351+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T16:04:10.351+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T16:04:19.537+08:00","level":"info","duration":"17.1ms","content":"127.0.0.1:57271 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"2e6312c4fbe680696834d54604f61717","span":"cc1874881a766b99"}
+{"@timestamp":"2022-06-20T16:09:28.776+08:00","level":"info","duration":"80.3ms","content":"127.0.0.1:57351 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"303f2cfbfb1bb66b414dd1ba47c0f170","span":"645cbca6563f0657"}
+{"@timestamp":"2022-06-20T16:20:15.338+08:00","level":"info","duration":"142.2ms","content":"127.0.0.1:57729 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"f5f31c9b59d5e5e4c1927be600cbddbe","span":"4a5ece421a404e2c"}
+{"@timestamp":"2022-06-20T16:22:11.720+08:00","level":"info","duration":"84.6ms","content":"127.0.0.1:57777 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"1048ddb5a9c131c158d6b09293a076b0","span":"5da1e889cf7b53ba"}
+{"@timestamp":"2022-06-20T16:24:39.621+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T16:24:39.621+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T16:24:52.630+08:00","level":"info","duration":"152.2ms","content":"127.0.0.1:57874 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"ba78dd99a0ea6cb73f17b6356cbd768a","span":"8bbde03395cf6f77"}
+{"@timestamp":"2022-06-20T16:25:38.288+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T16:25:38.288+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T16:25:46.254+08:00","level":"info","duration":"82.5ms","content":"127.0.0.1:57896 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"b62cb6388d800e4517deb3fb0841ae32","span":"e5e7536b935bf5e7"}
+{"@timestamp":"2022-06-20T16:30:27.695+08:00","level":"info","duration":"15.4ms","content":"127.0.0.1:58010 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"a114595c34faa56b6291d19c50871699","span":"9a72ce7746ae6db5"}
+{"@timestamp":"2022-06-20T16:34:17.795+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T16:34:17.795+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T16:34:26.657+08:00","level":"info","duration":"4.7ms","content":"127.0.0.1:58161 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"44a4f65bf5d25b7fcf0c1f0641cc5d68","span":"79aebf818f65a0fb"}
+{"@timestamp":"2022-06-20T16:34:40.427+08:00","level":"info","duration":"78.9ms","content":"127.0.0.1:58165 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"9a99cdcd4cb2422827cab74ffce23c26","span":"68d89d06b0cd3c24"}
+{"@timestamp":"2022-06-20T16:50:01.484+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T16:50:01.484+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T17:19:03.428+08:00","level":"info","duration":"3.0ms","content":"127.0.0.1:59124 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"3dfc3ee93227519f64fe06cba4047f19","span":"85acdd44d27a77dd"}
+{"@timestamp":"2022-06-20T17:22:01.527+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T17:22:01.527+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T17:22:10.857+08:00","level":"info","duration":"3.8ms","content":"127.0.0.1:59159 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"cb404eedfadb7ca4097ff6345523bd2c","span":"0b465b99af59e2ae"}
+{"@timestamp":"2022-06-20T17:22:51.607+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T17:22:51.607+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T17:22:59.184+08:00","level":"info","duration":"2.6ms","content":"127.0.0.1:59211 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"78eafc617f7854a2799d6d0ffc11452c","span":"6425eb078b3f5431"}
+{"@timestamp":"2022-06-20T17:27:54.183+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T17:27:54.183+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T17:28:16.022+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-06-20T17:28:16.022+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-06-20T17:28:24.744+08:00","level":"info","duration":"250.6ms","content":"127.0.0.1:59274 - /template.knowledge/KnowledgeList - {\"pageSize\":10,\"pageIndex\":1,\"tenantId\":10000}","trace":"580c1ef24aca59320275174347b7ddc3","span":"76ef5ba206fe90e5"}

+ 5 - 0
rpc/knowledge/logs/error.log

@@ -1 +1,6 @@
 {"@timestamp":"2022-06-17T10:00:38.974+08:00","level":"error","content":"server.go:90 listen tcp 127.0.0.1:8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted."}
+{"@timestamp":"2022-06-20T14:26:47.501+08:00","level":"error","content":"server.go:90 context deadline exceeded"}
+{"@timestamp":"2022-06-20T14:52:42.237+08:00","level":"error","content":"publisher.go:144 etcdserver: requested lease not found"}
+{"@timestamp":"2022-06-20T15:21:26.783+08:00","level":"error","content":"publisher.go:144 etcdserver: requested lease not found"}
+{"@timestamp":"2022-06-20T15:21:37.792+08:00","level":"error","content":"publisher.go:99 KeepAlive: etcdserver: requested lease not found"}
+{"@timestamp":"2022-06-20T15:24:29.881+08:00","level":"error","content":"publisher.go:144 etcdserver: requested lease not found"}

+ 11 - 0
rpc/knowledge/logs/slow.log

@@ -0,0 +1,11 @@
+{"@timestamp":"2022-06-20T14:47:00.330+08:00","level":"slow","duration":"2004.0ms","content":"[RPC] slowcall - 127.0.0.1:55538 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"2d5d134039e3f4160272bfd74d4dcbaa","span":"cc8cc811000d5616"}
+{"@timestamp":"2022-06-20T14:48:21.525+08:00","level":"slow","duration":"2009.9ms","content":"[RPC] slowcall - 127.0.0.1:55602 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"87f44f48742c8e34727907f7570d73a3","span":"6def42583119fe6e"}
+{"@timestamp":"2022-06-20T14:52:12.891+08:00","level":"slow","duration":"2007.5ms","content":"[RPC] slowcall - 127.0.0.1:55651 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"f866d9e0fecfc8dff3cdcc1cbcd57f67","span":"f3f4d881c7587e06"}
+{"@timestamp":"2022-06-20T15:03:44.780+08:00","level":"slow","duration":"2012.2ms","content":"[RPC] slowcall - 127.0.0.1:55851 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"e46ff95744cc936245203795c1b98ab4","span":"d8abad54a998d7cf"}
+{"@timestamp":"2022-06-20T15:04:30.430+08:00","level":"slow","duration":"2009.9ms","content":"[RPC] slowcall - 127.0.0.1:55868 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"b88a71a607be7e502f8271aeb0acf331","span":"e71bf4dcbf1e8405"}
+{"@timestamp":"2022-06-20T15:06:21.656+08:00","level":"slow","duration":"2007.3ms","content":"[RPC] slowcall - 127.0.0.1:55935 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"872c605cb7997509d688f0bca6f630df","span":"d0edf7a26ae28275"}
+{"@timestamp":"2022-06-20T15:15:49.952+08:00","level":"slow","duration":"893.0ms","content":"[RPC] slowcall - 127.0.0.1:56164 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"ceb3f760355ba9f6b26b794734af2c7f","span":"b3ea80176adfdb1a"}
+{"@timestamp":"2022-06-20T15:18:13.214+08:00","level":"slow","duration":"5600.4ms","content":"[RPC] slowcall - 127.0.0.1:56216 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"035bd531f52a91604271b72e743d1dd9","span":"1c82cefd3bd70d8d"}
+{"@timestamp":"2022-06-20T15:21:20.890+08:00","level":"slow","duration":"21829.9ms","content":"[RPC] slowcall - 127.0.0.1:56287 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"75dd33e8bfc00fee611ed5de067e4bc4","span":"e6fdaef26a4983c5"}
+{"@timestamp":"2022-06-20T15:24:29.876+08:00","level":"slow","duration":"12195.9ms","content":"[RPC] slowcall - 127.0.0.1:56400 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"63f766a5acc825b2f44f78e87ec5ca9c","span":"6579de462795f831"}
+{"@timestamp":"2022-06-20T16:50:13.209+08:00","level":"slow","duration":"808.8ms","content":"[RPC] slowcall - 127.0.0.1:58579 - /template.knowledge/KnowledgeAdd - {\"question\":\"超级订阅在哪设置订阅提醒,订阅关键词怎么设置?\",\"answer\":\"可以再app中”我的“,”订阅设置“中设置。\",\"tenantId\":\"10000\",\"appId\":\"10000\",\"person\":\"王三\"}","trace":"61111d099d8fa8d7d7571720a557f9c1","span":"ffdeba2f594e50b1"}

+ 503 - 0
rpc/knowledge/logs/stat.log

@@ -771,3 +771,506 @@
 {"@timestamp":"2022-06-17T15:09:35.453+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
 {"@timestamp":"2022-06-17T15:10:35.402+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.6Mi, Sys=17.8Mi, NumGC=16"}
 {"@timestamp":"2022-06-17T15:10:35.465+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:29:17.830+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=6.8Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:29:17.985+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:30:17.838+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=6.9Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:30:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:31:17.842+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.0Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:31:17.998+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:32:17.843+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.1Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:32:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:33:17.832+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.2Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T14:33:17.987+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:34:17.839+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T14:34:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:35:17.836+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T14:35:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T14:36:05.715+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 6.0ms, med: 6.2ms, 90th: 6.2ms, 99th: 6.2ms, 99.9th: 6.2ms"}
+{"@timestamp":"2022-06-20T14:36:17.831+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.7Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T14:36:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:37:05.715+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:37:17.836+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T14:37:17.991+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:38:05.718+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:38:17.836+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.8Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T14:38:17.986+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:39:05.723+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:39:17.834+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T14:39:17.989+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:40:05.725+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:40:17.838+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T14:40:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:41:05.717+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:41:17.832+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.1Mi, Sys=18.7Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T14:41:17.987+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:42:05.716+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:42:17.837+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.2Mi, Sys=18.7Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T14:42:17.988+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:43:05.713+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:43:17.830+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=18.7Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T14:43:17.986+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:44:05.721+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:44:17.829+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.3Mi, Sys=18.7Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T14:44:17.984+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:45:05.723+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:45:17.830+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.4Mi, Sys=18.7Mi, NumGC=11"}
+{"@timestamp":"2022-06-20T14:45:17.987+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:47:42.811+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.8Mi, TotalAlloc=7.0Mi, Sys=14.3Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:47:42.843+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T14:48:00.339+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2004.0ms, med: 2004.0ms, 90th: 2004.0ms, 99th: 2004.0ms, 99.9th: 2004.0ms"}
+{"@timestamp":"2022-06-20T14:48:42.803+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.2Mi, TotalAlloc=7.4Mi, Sys=14.5Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:48:42.837+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T14:49:00.332+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2009.0ms, med: 2009.9ms, 90th: 2009.9ms, 99th: 2009.9ms, 99.9th: 2009.9ms"}
+{"@timestamp":"2022-06-20T14:49:42.802+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.5Mi, Sys=14.5Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:49:42.849+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:50:00.337+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:50:42.815+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=14.5Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:50:42.840+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:51:00.341+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:52:52.235+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.8Mi, TotalAlloc=7.3Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:52:52.268+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T14:53:12.894+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2007.0ms, med: 2007.5ms, 90th: 2007.5ms, 99th: 2007.5ms, 99.9th: 2007.5ms"}
+{"@timestamp":"2022-06-20T14:53:52.237+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.9Mi, TotalAlloc=7.4Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T14:53:52.268+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:54:12.902+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:54:52.230+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.5Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:54:52.276+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:55:12.903+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:55:52.232+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T14:55:52.271+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:56:12.900+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:56:52.238+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T14:56:52.269+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:57:12.905+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:57:52.238+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.8Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T14:57:52.270+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:58:12.901+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:58:52.241+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T14:58:52.271+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T14:59:12.899+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T14:59:52.230+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T14:59:52.277+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:00:12.905+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:00:52.239+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.1Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:00:52.271+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:01:12.891+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:01:52.230+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.2Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:01:52.276+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:02:12.904+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:02:52.240+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T15:02:52.271+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:03:12.906+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:03:52.226+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=8.6Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T15:03:52.273+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:04:12.898+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2012.0ms, med: 2012.2ms, 90th: 2012.2ms, 99th: 2012.2ms, 99.9th: 2012.2ms"}
+{"@timestamp":"2022-06-20T15:05:18.912+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:05:18.928+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:05:30.443+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2009.0ms, med: 2009.9ms, 90th: 2009.9ms, 99th: 2009.9ms, 99.9th: 2009.9ms"}
+{"@timestamp":"2022-06-20T15:07:11.704+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.2Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:07:11.742+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:07:21.664+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2007.0ms, med: 2007.3ms, 90th: 2007.3ms, 99th: 2007.3ms, 99.9th: 2007.3ms"}
+{"@timestamp":"2022-06-20T15:08:11.709+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.2Mi, Sys=18.2Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:08:11.739+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:08:21.670+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:09:11.704+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.2Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:09:11.750+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:09:21.665+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:10:11.711+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.4Mi, Sys=18.2Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:10:11.742+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:10:21.658+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:11:11.714+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.5Mi, Sys=18.2Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:11:11.745+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:11:21.656+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:12:11.717+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=18.2Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:12:11.740+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:12:21.659+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:13:11.711+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.2Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:13:11.743+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:13:21.672+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:14:11.708+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.8Mi, Sys=18.2Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:14:11.740+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:14:21.665+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:15:11.704+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.2Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:15:11.751+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:15:21.666+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:16:41.021+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.9Mi, TotalAlloc=7.2Mi, Sys=14.0Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:16:41.062+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:16:49.960+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 893.0ms, med: 893.0ms, 90th: 893.0ms, 99th: 893.0ms, 99.9th: 893.0ms"}
+{"@timestamp":"2022-06-20T15:17:41.030+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.0Mi, TotalAlloc=7.3Mi, Sys=14.0Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:17:41.060+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:21:20.863+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.0Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:21:17.743+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:21:26.739+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 21829.0ms, med: 21829.9ms, 90th: 21829.9ms, 99th: 21829.9ms, 99.9th: 21829.9ms"}
+{"@timestamp":"2022-06-20T15:21:47.735+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.1Mi, TotalAlloc=7.4Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:21:47.770+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:23:18.602+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:23:18.620+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:23:28.388+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 106.0ms, med: 107.0ms, 90th: 107.0ms, 99th: 107.0ms, 99.9th: 107.0ms"}
+{"@timestamp":"2022-06-20T15:24:51.243+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.2Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:24:51.279+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:26:01.446+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.0Mi, TotalAlloc=7.2Mi, Sys=14.3Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:26:01.488+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-06-20T15:26:11.118+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.1/s, drops: 0, avg time: 19.3ms, med: 23.5ms, 90th: 23.5ms, 99th: 23.5ms, 99.9th: 23.5ms"}
+{"@timestamp":"2022-06-20T15:27:01.438+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.4Mi, TotalAlloc=7.6Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:27:01.484+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-06-20T15:27:11.117+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 18.0ms, med: 18.6ms, 90th: 18.6ms, 99th: 18.6ms, 99.9th: 18.6ms"}
+{"@timestamp":"2022-06-20T15:28:38.223+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=6.8Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:28:38.243+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:29:38.226+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.9Mi, TotalAlloc=7.2Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:29:38.242+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:29:50.849+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 88.0ms, med: 88.1ms, 90th: 88.1ms, 99th: 88.1ms, 99.9th: 88.1ms"}
+{"@timestamp":"2022-06-20T15:30:38.219+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:30:38.249+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:30:50.847+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:31:38.231+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.4Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:31:38.246+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:31:50.842+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:32:38.224+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.5Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:32:38.249+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:32:50.846+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:33:38.230+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:33:38.246+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:33:50.838+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:34:38.217+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:34:38.248+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:34:50.844+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:35:38.221+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.8Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:35:38.252+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:35:50.844+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:36:38.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:36:38.251+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:36:50.848+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:37:38.228+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:37:38.243+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:37:50.840+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:39:01.134+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.9Mi, TotalAlloc=6.8Mi, Sys=18.7Mi, NumGC=2"}
+{"@timestamp":"2022-06-20T15:39:01.366+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:40:01.149+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=4.0Mi, TotalAlloc=6.9Mi, Sys=18.7Mi, NumGC=2"}
+{"@timestamp":"2022-06-20T15:40:01.362+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:41:01.143+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.0Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:41:01.374+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:42:01.142+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.0Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:42:01.372+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:43:01.147+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.1Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:43:01.364+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:44:01.139+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.2Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:44:01.360+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:45:01.135+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:45:01.368+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:46:01.142+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T15:46:01.373+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:47:01.134+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.4Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:47:01.367+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:48:01.139+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.5Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T15:48:01.372+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:49:01.147+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.6Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:49:01.366+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:50:01.138+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.6Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T15:50:01.372+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:51:01.137+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T15:51:01.370+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:52:01.138+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.8Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T15:52:01.369+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:53:01.141+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.9Mi, Sys=18.7Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T15:53:01.372+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:54:01.136+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T15:54:01.368+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:55:01.142+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T15:55:01.375+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:56:28.165+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:56:28.210+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:56:39.680+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 30.0ms, med: 30.3ms, 90th: 30.3ms, 99th: 30.3ms, 99.9th: 30.3ms"}
+{"@timestamp":"2022-06-20T15:57:28.171+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.2Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T15:57:28.205+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:57:39.680+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T15:58:28.172+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.5Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:58:28.206+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T15:58:39.676+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 15.0ms, med: 15.3ms, 90th: 15.3ms, 99th: 15.3ms, 99.9th: 15.3ms"}
+{"@timestamp":"2022-06-20T15:59:28.177+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.5Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T15:59:28.208+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T15:59:39.675+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:00:28.169+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.6Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:00:28.208+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:00:39.683+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:01:28.177+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.7Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:01:28.209+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:01:39.673+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:02:28.174+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.8Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:02:28.205+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:02:39.683+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:03:28.172+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.9Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:03:28.207+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:03:39.683+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:05:10.322+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.0Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:05:10.354+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:05:19.538+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 17.0ms, med: 17.1ms, 90th: 17.1ms, 99th: 17.1ms, 99.9th: 17.1ms"}
+{"@timestamp":"2022-06-20T16:06:10.327+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:06:10.357+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:06:19.545+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:07:10.317+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:07:10.354+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:07:19.539+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:08:10.321+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.3Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:08:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:08:19.543+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:09:10.329+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.4Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:09:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:09:19.544+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:10:10.326+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.8Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:10:10.357+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:10:19.542+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 80.0ms, med: 80.3ms, 90th: 80.3ms, 99th: 80.3ms, 99.9th: 80.3ms"}
+{"@timestamp":"2022-06-20T16:11:10.321+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:11:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:11:19.548+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:12:10.329+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:12:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:12:19.544+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:13:10.321+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.0Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T16:13:10.353+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:13:19.544+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:14:10.323+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.2Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T16:14:10.354+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:14:19.545+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:15:10.330+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T16:15:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:15:19.538+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:16:10.331+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T16:16:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:16:19.548+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:17:10.325+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.4Mi, Sys=18.4Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T16:17:10.356+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:17:19.540+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:18:10.322+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.5Mi, Sys=18.4Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T16:18:10.353+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:18:19.546+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:19:10.323+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.6Mi, Sys=18.4Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T16:19:10.354+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:19:19.550+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:20:10.318+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.7Mi, Sys=18.4Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T16:20:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:20:19.548+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 142.0ms, med: 142.2ms, 90th: 142.2ms, 99th: 142.2ms, 99.9th: 142.2ms"}
+{"@timestamp":"2022-06-20T16:21:10.322+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.1Mi, Sys=18.4Mi, NumGC=11"}
+{"@timestamp":"2022-06-20T16:21:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:21:19.546+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:22:10.326+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=9.2Mi, Sys=18.4Mi, NumGC=11"}
+{"@timestamp":"2022-06-20T16:22:10.357+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:22:19.541+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 84.0ms, med: 84.6ms, 90th: 84.6ms, 99th: 84.6ms, 99.9th: 84.6ms"}
+{"@timestamp":"2022-06-20T16:23:10.331+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.5Mi, Sys=18.4Mi, NumGC=12"}
+{"@timestamp":"2022-06-20T16:23:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:23:19.550+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:24:10.318+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=9.6Mi, Sys=18.4Mi, NumGC=12"}
+{"@timestamp":"2022-06-20T16:24:10.352+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:24:19.541+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:26:38.125+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:26:38.293+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:26:46.261+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 82.0ms, med: 82.5ms, 90th: 82.5ms, 99th: 82.5ms, 99.9th: 82.5ms"}
+{"@timestamp":"2022-06-20T16:27:38.121+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.2Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:27:38.291+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:27:46.269+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:28:38.124+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:28:38.295+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:28:46.267+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:29:38.124+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.4Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:29:38.294+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:29:46.262+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:30:38.119+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.6Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:30:38.288+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:30:46.257+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 15.0ms, med: 15.4ms, 90th: 15.4ms, 99th: 15.4ms, 99.9th: 15.4ms"}
+{"@timestamp":"2022-06-20T16:31:38.129+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.7Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:31:38.301+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:31:46.260+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:32:38.117+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.8Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:32:38.290+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:32:46.255+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:33:38.119+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.9Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:33:38.290+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:33:46.268+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:35:17.748+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.7Mi, TotalAlloc=7.2Mi, Sys=14.0Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:35:17.796+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-06-20T16:35:26.670+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 41.5ms, med: 78.9ms, 90th: 78.9ms, 99th: 78.9ms, 99.9th: 78.9ms"}
+{"@timestamp":"2022-06-20T16:36:17.756+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.8Mi, TotalAlloc=7.4Mi, Sys=14.0Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:36:17.802+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:36:26.671+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:37:17.749+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.4Mi, Sys=14.0Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:37:17.796+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:37:26.658+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:38:17.760+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.5Mi, Sys=14.0Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:38:17.807+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:38:26.668+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:39:17.755+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.6Mi, Sys=14.0Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:39:17.802+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:39:26.665+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:40:17.759+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.7Mi, Sys=14.0Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:40:17.806+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:40:26.664+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:41:17.752+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.8Mi, Sys=14.0Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:41:17.797+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:41:26.663+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:42:17.757+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.9Mi, Sys=14.0Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:42:17.803+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:42:26.662+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:43:17.753+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=14.0Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T16:43:17.800+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:43:26.668+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:44:17.747+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=14.0Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T16:44:17.807+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:44:26.660+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:45:17.749+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.1Mi, Sys=14.0Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T16:45:17.797+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:45:26.666+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:46:17.753+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.2Mi, Sys=14.0Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T16:46:17.800+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:46:26.658+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:47:17.758+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.2Mi, Sys=14.0Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T16:47:17.796+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:47:26.667+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:48:17.754+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=14.0Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T16:48:17.801+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:48:26.671+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:49:17.752+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.4Mi, Sys=14.0Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T16:49:17.798+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:49:26.669+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:51:01.084+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.8Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:51:01.487+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T16:51:13.220+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 808.0ms, med: 808.8ms, 90th: 808.8ms, 99th: 808.8ms, 99.9th: 808.8ms"}
+{"@timestamp":"2022-06-20T16:52:01.084+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.9Mi, TotalAlloc=7.2Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T16:52:01.485+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:52:13.222+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:53:01.077+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:53:01.497+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:53:13.214+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:54:01.088+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.4Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T16:54:01.490+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:54:13.221+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:55:01.078+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.4Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:55:01.498+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:55:13.223+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:56:01.074+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.5Mi, Sys=18.4Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T16:56:01.495+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:56:13.214+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:57:01.087+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.6Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:57:01.489+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:57:13.222+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:58:01.081+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.7Mi, Sys=18.4Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T16:58:01.497+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:58:13.220+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T16:59:01.074+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T16:59:01.491+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T16:59:13.211+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:00:01.076+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.8Mi, Sys=18.4Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T17:00:01.493+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:00:13.210+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:01:01.084+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T17:01:01.487+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:01:13.212+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:02:01.078+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.0Mi, Sys=18.4Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T17:02:01.497+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:02:13.223+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:03:01.082+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.0Mi, Sys=18.4Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T17:03:01.486+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:03:13.217+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:04:01.088+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.1Mi, Sys=18.4Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T17:04:01.492+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:04:13.211+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:05:01.078+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.2Mi, Sys=18.4Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T17:05:01.484+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:05:13.219+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:06:01.083+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.3Mi, Sys=18.4Mi, NumGC=10"}
+{"@timestamp":"2022-06-20T17:06:01.486+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:06:13.212+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:07:01.082+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.3Mi, Sys=18.4Mi, NumGC=11"}
+{"@timestamp":"2022-06-20T17:07:01.498+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:07:13.209+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:08:01.077+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.4Mi, Sys=18.4Mi, NumGC=11"}
+{"@timestamp":"2022-06-20T17:08:01.490+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:08:13.212+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:09:01.084+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.5Mi, Sys=18.4Mi, NumGC=12"}
+{"@timestamp":"2022-06-20T17:09:01.485+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:09:13.216+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:10:01.074+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.6Mi, Sys=18.4Mi, NumGC=12"}
+{"@timestamp":"2022-06-20T17:10:01.496+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:10:13.223+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:11:01.085+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.6Mi, Sys=18.4Mi, NumGC=13"}
+{"@timestamp":"2022-06-20T17:11:01.486+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:11:13.217+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:12:01.077+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.7Mi, Sys=18.4Mi, NumGC=13"}
+{"@timestamp":"2022-06-20T17:12:01.496+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:12:13.210+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:13:01.077+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.8Mi, Sys=18.4Mi, NumGC=14"}
+{"@timestamp":"2022-06-20T17:13:01.495+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:13:13.223+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:14:01.076+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=8.9Mi, Sys=18.4Mi, NumGC=14"}
+{"@timestamp":"2022-06-20T17:14:01.491+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:14:13.213+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:15:01.087+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.9Mi, Sys=18.4Mi, NumGC=15"}
+{"@timestamp":"2022-06-20T17:15:01.488+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:15:13.212+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:16:01.088+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=9.0Mi, Sys=18.4Mi, NumGC=15"}
+{"@timestamp":"2022-06-20T17:16:01.491+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:16:13.213+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:17:01.074+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.1Mi, Sys=18.4Mi, NumGC=16"}
+{"@timestamp":"2022-06-20T17:17:01.492+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:17:13.209+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:18:01.087+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=9.1Mi, Sys=18.4Mi, NumGC=16"}
+{"@timestamp":"2022-06-20T17:18:01.490+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:18:13.211+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:19:01.087+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.2Mi, Sys=18.4Mi, NumGC=17"}
+{"@timestamp":"2022-06-20T17:19:01.489+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:19:13.224+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2.0ms, med: 3.0ms, 90th: 3.0ms, 99th: 3.0ms, 99.9th: 3.0ms"}
+{"@timestamp":"2022-06-20T17:20:01.088+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=9.4Mi, Sys=18.4Mi, NumGC=17"}
+{"@timestamp":"2022-06-20T17:20:01.490+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T17:20:13.213+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:21:01.084+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=9.5Mi, Sys=18.4Mi, NumGC=18"}
+{"@timestamp":"2022-06-20T17:21:01.489+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:21:13.219+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:23:51.579+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.0Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T17:23:51.610+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T17:23:59.190+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 2.0ms, med: 2.6ms, 90th: 2.6ms, 99th: 2.6ms, 99.9th: 2.6ms"}
+{"@timestamp":"2022-06-20T17:24:51.583+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.7Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T17:24:51.614+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:24:59.194+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:25:51.580+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T17:25:51.611+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:25:59.194+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:26:51.584+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.4Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T17:26:51.616+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:26:59.187+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:29:15.997+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=6.9Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T17:29:16.028+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-06-20T17:29:24.754+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 250.0ms, med: 250.6ms, 90th: 250.6ms, 99th: 250.6ms, 99.9th: 250.6ms"}
+{"@timestamp":"2022-06-20T17:30:15.996+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.6Mi, TotalAlloc=7.1Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-06-20T17:30:16.027+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:30:24.745+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:31:15.993+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.2Mi, Sys=18.4Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T17:31:16.024+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:31:24.758+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:32:15.990+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.3Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-06-20T17:32:16.022+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:32:24.755+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:33:15.999+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.4Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T17:33:16.029+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:33:24.759+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:34:15.991+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.5Mi, TotalAlloc=7.5Mi, Sys=18.7Mi, NumGC=5"}
+{"@timestamp":"2022-06-20T17:34:16.023+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:34:24.753+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:35:15.999+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.6Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T17:35:16.030+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:35:24.748+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:36:15.995+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.7Mi, Sys=18.7Mi, NumGC=6"}
+{"@timestamp":"2022-06-20T17:36:16.026+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:36:24.755+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:37:16.002+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=7.8Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T17:37:16.024+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:37:24.746+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:38:16.003+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=7.9Mi, Sys=18.7Mi, NumGC=7"}
+{"@timestamp":"2022-06-20T17:38:16.024+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:38:24.756+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:39:16.003+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T17:39:16.022+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:39:24.747+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:40:15.992+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.4Mi, TotalAlloc=8.0Mi, Sys=18.7Mi, NumGC=8"}
+{"@timestamp":"2022-06-20T17:40:16.023+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:40:24.757+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-06-20T17:41:15.997+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=3.3Mi, TotalAlloc=8.2Mi, Sys=18.7Mi, NumGC=9"}
+{"@timestamp":"2022-06-20T17:41:16.028+08:00","level":"stat","content":"(rpc) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-06-20T17:41:24.759+08:00","level":"stat","content":"(knowledge.rpc) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}

+ 66 - 0
rpc/knowledge/test/knowledge_test.go

@@ -0,0 +1,66 @@
+package test
+
+import (
+	"context"
+	"flag"
+	"github.com/zeromicro/go-zero/core/conf"
+	"github.com/zeromicro/go-zero/zrpc"
+	"knowledgeBase/rpc/knowledge/internal/config"
+	"knowledgeBase/rpc/knowledge/knowledgeclient"
+	"log"
+	"testing"
+	"time"
+)
+
+var configFile = flag.String("f", "../etc/knowledge.yaml", "the config file")
+var c config.Config
+
+func init() {
+	conf.MustLoad(*configFile, &c)
+}
+
+func Test_KnowledgeAdd(t *testing.T) {
+	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
+	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
+	req := &knowledgeclient.AddRequest{}
+	req.AppId = "10000"
+	req.TenantId = "10000"
+	req.Question = "超级订阅在哪设置订阅提醒,订阅关键词怎么设置?"
+	req.Answer = "可以再app中”我的“,”订阅设置“中设置。"
+	req.Person = "王三"
+	res, err := TestSystem.KnowledgeAdd(ctx, req)
+	log.Println("res ", res)
+	log.Println("err ", err)
+}
+
+func Test_KnowledgeList(t *testing.T) {
+	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
+	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
+	req := &knowledgeclient.ListRequest{}
+	req.TenantId = 10000
+	req.PageSize = 10
+	req.PageIndex = 1
+	res, err := TestSystem.KnowledgeList(ctx, req)
+	log.Println("res ", res)
+	log.Println("err ", err)
+}
+
+func Test_KnowledgeInfo(t *testing.T) {
+	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
+	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
+	req := &knowledgeclient.KnowledgeEntity{}
+	req.AnswerId = 1
+	res, err := TestSystem.KnowledgeInfo(ctx, req)
+	log.Println("res ", res)
+	log.Println("err ", err)
+}
+
+func Test_KnowledgeEdit(t *testing.T) {
+	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
+	TestSystem := knowledgeclient.NewKnowledge(zrpc.MustNewClient(c.TestConf))
+	req := &knowledgeclient.KnowledgeEditReq{}
+	req.AnswerId = 1
+	res, err := TestSystem.KnowledgeEdit(ctx, req)
+	log.Println("res ", res)
+	log.Println("err ", err)
+}

+ 3 - 3
rpc/knowledge/util/elasticsearch_dsl.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	. "knowledgeBase/rpc/knowledge/init"
 	"log"
+	"strconv"
 	"strings"
 )
 
@@ -39,7 +40,7 @@ func DSL4SearchByKwsAndTags(kws string, tags ...string) string {
 	return sql
 }
 
-func DSL4SmartResponse(question, tenantId string, msgType int) string {
+func DSL4SmartResponse(question string, tenantId int64, msgType int) string {
 	var (
 		totalQuery = `{"post_filter":{%s},"query":{%s},"_source":["_id"%s],"size":%d}`
 		postFilter = `"script":{"script":"def sk=_source.must_keywords;def n=0;for(item in sk){ n++;if(que.indexOf(item)>-1){return true}};if(n==0){ return true}","params":{"que":"%s"}}`
@@ -50,7 +51,6 @@ func DSL4SmartResponse(question, tenantId string, msgType int) string {
 	//hanlpCutWords := HanlpGetNormalWords(question, "http://39.106.145.77:8080/api/segment")
 	hanlpCutWords := HanlpGetNormalWords(question, C.Segment)
 	question = strings.Join(hanlpCutWords, "")
-	//fmt.Println("question:", question)
 	lenQuestion := len([]rune(question))
 	if lenQuestion >= 2 {
 		queryPercent := "40%"
@@ -72,7 +72,7 @@ func DSL4SmartResponse(question, tenantId string, msgType int) string {
 		if mustque != "" {
 			postFilter = fmt.Sprintf(postFilter, mustque)
 		}
-		query = fmt.Sprintf(query, "", typeStr, question, queryPercent, tenantId)
+		query = fmt.Sprintf(query, "", typeStr, question, queryPercent, strconv.Itoa(int(tenantId)))
 		queryDSL := fmt.Sprintf(totalQuery, postFilter, query, `,"answer","questions","_id"`, 1)
 		//log.Println("queryDSL:", queryDSL)
 		return queryDSL

+ 28 - 7
rpc/knowledge/util/hanlp.go

@@ -115,24 +115,45 @@ func ElasticSmartIK(words, urls string) (res string) {
 
 // HttpDo smartInfo中用到,对问题分词
 func HttpDo(ques string) (result string) {
+	var (
+		kwMap    []map[string]interface{}
+		keyWords = ""
+	)
 	client := &http.Client{}
 	//req, err := http.NewRequest("POST", "http://39.106.145.77:8080/api/segment", strings.NewReader("content="+ques))
 	req, err := http.NewRequest("POST", C.Segment, strings.NewReader("content="+ques))
 	if err != nil {
-		log.Println("err1:")
+		log.Println("问题分词出错err1:", err)
+		return ""
 	}
-
 	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-
 	resp, err := client.Do(req)
-
+	if err != nil {
+		log.Println("问题分词出错err2:", err)
+		return ""
+	}
 	defer resp.Body.Close()
-
 	body, err := ioutil.ReadAll(resp.Body)
 	if err != nil {
-		log.Println("err2:")
+		log.Println("问题分词出错err3:", err)
+		return ""
+	}
+	err = json.Unmarshal([]byte(body), &kwMap)
+	if err != nil {
+		log.Println("推荐答案获取分词解码出错err4:", err)
+		return ""
+	}
+	if kwMap != nil && len(kwMap) > 0 {
+		for k, v := range kwMap {
+			if strings.Contains(v["nature"].(string), "n") && len(v["word"].(string)) > 3 {
+				if k > 0 && len(keyWords) > 1 {
+					keyWords += " "
+				}
+				keyWords += v["word"].(string)
+			}
+		}
 	}
-	return string(body)
+	return keyWords
 }
 
 type SimpleEncrypt struct {