使用2个CPU进行服务器



我正在GO中构建GRPC服务器,我想提高其性能。我增加了机器并放置2CPU以使其变得更好,但我注意到我的服务器不使用所有CPU内核,并且找不到解决方法(我已经运行了一些测试来制作服务器工人更努力)。似乎我的服务器经常使用1个CPU,而另一个则不使用。我的负载平均停留在1以上是什么意思是我的服务器到处都是请求,但是当我看到Netdata的性能时,只有一个CPU工作。

这是我的GRPC代码:

package main
import (
    "fmt"
    "runtime"
    "log"
    "net"
    "google.golang.org/grpc"
    "golang.org/x/net/context"
    "google.golang.org/grpc/reflection"
    pb "teste/prototeste"
)
func (s *server) Test(ctx context.Context, n *pb.TestRequest)      (*pb.TestReply, error){
    return &pb.TestReply{Message: n.Name}, nil
}
type server struct{}
const (
    port = ":50051"
)
func main(){
    numOfCores := runtime.NumCPU()
    fmt.Println(numOfCores)
    runtime.GOMAXPROCS(numOfCores)
    lis, err := net.Listen("tcp", port)
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer()
    pb.RegisterGreeterServer(s, &server{})
    // Register reflection service on gRPC server.
    reflection.Register(s)
    s.Serve(lis)
}

请注意,在服务功能中,有一个goroutine允许服务器并行接受多个请求。

API参考GRPC

这是我的CPU用法

如何解决此问题并使我的服务器使用2 CPU?

在GRPC中,每个服务器处理程序都在自己的goroutine中运行。从那里可以确定可以安排哪些CPU的CPU。根据您的服务器处理程序的工作,系统负载等,他们可能最终都安排在同一CPU上。

相关内容

  • 没有找到相关文章

最新更新