我编写了一个简单的 Thrift 客户端和服务器来测试服务。我正在使用我能找到的最简单的客户端......
TSocket socket = new TSocket(<host here>, 8002);
TProtocol proto = new TBinaryProtocol(socket);
Facade.Client client = new Facade.Client(proto);
socket.open();
...
...和最简单的服务器...
Facade.Iface implementation = facadeContext.getBean(Facade.Iface.class);
Facade.Processor processor = new Facade.Processor(implementation);
TServerTransport transport = facadeContext.getBean(TServerSocket.class);
final TServer thriftServer = new TSimpleServer(new Args(transport).processor(processor));
thriftServer.serve();
...
(此外,环境中的所有内容都是 Thrift 0.6.1。)
当我向这个客户端发送几百个请求时,响应时间稳定在 2 毫秒左右,这在我的上下文中很好。但是,如果我继续发出请求,但在它们之间稍作延迟,比如说 5 秒,这些时间会飙升至 4-6 毫秒。
我玩过 Socket keep-alive 属性和其他一些东西,但是有一些我似乎无法量化的开销。有没有其他人看到这个?