Я тестировал соединение клиент-сервер с клиентом gRPC, написанным на C #, и несколькими серверами (написанными на c ++, C #, rust and go). Когда я тестировал его локально, все прошло нормально (средний отклик GO около 0,12 мс), но когда я тестирую его по локальной сети, он становится очень медленным, как ДЕЙСТВИТЕЛЬНО медленным. Среднее время доходит до 40 мс на запрос!
Чтобы было ясно: я использую простой протокол HelloWorld с простейшим возможным подключением. Другие серверы получают около 1 мс за запрос, а Go - около 40 мс.
Код сервера My Go:
package main
import (
"context"
pb "descriptions"
"log"
"net"
"google.golang.org/grpc"
)
type server struct{}
// SayHello implements helloworld.GreeterServer
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
//log.Printf("Received: %v", in.Name)
return &pb.HelloReply{Message: ""}, nil
}
func main() {
// lis, err := net.Listen("tcp", port)
lis, err := net.Listen("tcp", "0.0.0.0:50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
log.Printf("Server listening on: " + lis.Addr().String())
pb.RegisterGreeterServer(s, &server{})
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
Я не подозреваю, что это проблема на стороне клиента, потому что она хорошо работает с другими серверами. У кого-нибудь была такая же проблема с голангом? Пожалуйста, дайте мне знать!
Я также подумал, может ли это быть проблемой HTTP 1.1, но gRPC поддерживает HTTP2, поэтому я подозреваю, что он уже используется при запуске этого кода.