gRPC - 请求响应性能

时间:2017-03-17 23:11:28

标签: c# grpc

gRPC 1.1.0 C#.NET 4.6 Windows 7 / Windows 10

我刚刚在C#中测试了gRPC的性能,并对计算机之间的性能感到困惑。小消息采用一致的200ms发送/回复时间,较大的消息(约1500个字符)为亚毫秒。请参阅下面的客户端/服是否需要其他配置来处理小消息?

我的测试是按照入门指南进行的:http://www.grpc.io/docs/quickstart/csharp.html

简而言之,有一个Greeter服务,SayHello端点接受HelloRequest,并以HelloResponse回复。

service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

客户端

再次,与样本几乎相同。请注意stringLength变量。当它设置为1-1200(ish)之间的值时,接收响应的时间始终为200ms

class Program
{
    static void Main(string[] args)
    {
        var channel = new Channel("192.168.82.254", 50051, ChannelCredentials.Insecure);

        var client = new Greeter.GreeterClient(channel);
        var stringLength = 1500;
        for (var x = 0; x < 50; x++)
        {
            var sw = Stopwatch.StartNew();
            var req = new HelloRequest { Name = new String('x', stringLength) };
            var reply = client.SayHello(req);
            sw.Stop();
            Console.WriteLine($"Greeting: {sw.ElapsedMilliseconds} ms");
        }           
        Console.ReadLine();
    }   
}

服务器

非常简单,处理请求并回复。从样本中逐字逐句。

const int Port = 50051;

static void Main(string[] args)
{
    Server server = new Server
    {
        Services = { Greeter.BindService(new GreeterImpl()) },
        Ports = { new ServerPort("192.168.82.254", Port, ServerCredentials.Insecure) }
    };
    server.Start();

    Console.WriteLine("Greeter server listening on port " + Port);
    Console.WriteLine("Press any key to stop the server...");
    Console.ReadKey();

    server.ShutdownAsync().Wait();
}

class GreeterImpl : Greeter.GreeterBase
{
    // Server side handler of the SayHello RPC
    public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
    {
        return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
    }
}

1 个答案:

答案 0 :(得分:2)

1.1.x dashboard似乎表明版本1.1.0仍然存在Windows上的乒乓计时问题 - https://github.com/grpc/grpc/issues/8806。这似乎是在当前主机和v1.2.x中修复的。请使用1.2.0-pre1 nugets进行验证(我们现在非常接近1.2.0版本,因此官方1.2.0软件包很快就会推出 - 与此同时,收到您的确认将非常有用)

master dashboard