kubeSphere的应用商店/apps接口访问需要10秒钟,如下:

查看openpitrix-system的日志发现grpc_server.go文件调用执行DescribeApps的时间约为10秒钟:

定位到源码如下:
func (g *GrpcServer) unaryServerLogInterceptor() grpc.UnaryServerInterceptor {
showErrorCause := g.showErrorCause
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
var err error
s := ctxutil.GetSender(ctx)
requestId := ctxutil.GetRequestId(ctx)
ctx = ctxutil.SetRequestId(ctx, requestId)
ctx = ctxutil.ContextWithSender(ctx, s)
locale := ctxutil.GetLocale(ctx)
ctx = ctxutil.SetLocale(ctx, locale)
method := strings.Split(info.FullMeDescribeAppsthod, "/")
action := method[len(method)-1]
if p, ok := req.(proto.Message); ok {
if content, err := jsonPbMarshaller.MarshalToString(p); err != nil {
logger.Error(ctx, "Failed to marshal proto message to string [%s] [%+v] [%+v]", action, s, err)
} else {
logger.Info(ctx, "Request received [%s] [%+v] [%s]", action, s, content)
}
}
start := time.Now()
resp, err := handler(ctx, req)
elapsed := time.Since(start)
logger.Info(ctx, "Handled request [%s] [%+v] exec_time is [%s]", action, s, elapsed)
if e, ok := status.FromError(err); ok {
if e.Code() != codes.OK {
logger.Debug(ctx, "Response is error: %s, %s", e.Code().String(), e.Message())
if !showErrorCause {
err = gerr.ClearErrorCause(err)
}
}
}
return resp, err
}
}
最终执行到了上述中的handler(ctx, req)方法,但本人对go语言不是很熟,不太清楚handler方法后面执行了什么。
希望有大神解答下改方法最终调用了哪个服务及有可能造成执行慢的原因