首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thrift Client/Server在空闲期后的不稳定响应时间

Thrift Client/Server在空闲期后的不稳定响应时间
EN

Stack Overflow用户
提问于 2013-01-18 14:03:33
回答 1查看 399关注 0票数 1

我已经编写了一个简单的Thrift客户机和服务器来测试服务。我用的是我能找到的最简单的客户...

代码语言:javascript
复制
TSocket socket = new TSocket(<host here>, 8002);
TProtocol proto = new TBinaryProtocol(socket);
Facade.Client client = new Facade.Client(proto);
socket.open();
...

...and最简单的服务器...

代码语言:javascript
复制
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毫秒。

我已经尝试了套接字的keep-alive属性和其他一些东西,但是有一些开销我似乎无法量化。还有人看过这个吗?

EN

回答 1

Stack Overflow用户

发布于 2013-01-23 06:06:54

我用普通的java.io.Socket写了一个简单的TCP服务器,我想我上面看到的和Thrift无关。我认为我观察到的轻微延迟与这样一个事实有关,即突发请求在服务器上缓冲来自这些请求的输入,而断断续续的请求并没有获得这种好处。具体来说,在下面的代码中...

代码语言:javascript
复制
public class SocketServerTest {
    public static void main(String[] args) throws Exception {
        try (ServerSocket serverSocket = new ServerSocket(8002)) {
            Socket socket = serverSocket.accept();
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            String inputLine = null;

            while ((inputLine = in.readLine()) != null) {
                if (inputLine.equals("ping")) { out.println("pong"); }
            }

            out.close();
            in.close();
            socket.close();
        }
    }
}

当有请求数据缓冲时,...in.readLine()不会阻塞。

现在,这本身并不能解释2毫秒的延迟,但有几个地方发生了上述序列,所以它加起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14393282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档