サービスをテストするための単純な 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 ミリ秒まで急増します。
ソケットのキープアライブ プロパティなどをいじってみましたが、定量化できないオーバーヘッドが発生しています。他の誰かがこれを見たことがありますか?