繁体   English   中英

Apache 节俭超时

[英]Apache Thrift timeout

我在 0.13.0 版本中使用 apache thrift。 一旦两次调用之间的时间大约为 1.5 秒,连接就会关闭。 超时时间从 1.3 到 1.8 秒不等。

keepAlive在服务器和客户端中设置。 我为 rx, tx 尝试了不同的方法,但这并没有改变任何东西。 我用于测试的客户端代码如下。 客户端使用 windows,服务器运行 linux。

  for (int i = 0; i < 100'000;i+=50){
    remote_method();
    auto sleep = std::chrono::milliseconds(i);
    std::cout << "Sleep: " << i << "\n";
    std::this_thread::sleep_for(sleep);
  }

Thrift 将在下面的代码片段中抛出异常,该代码片段位于 TSocket.cpp

// Timed out!
    if (errno_copy == THRIFT_ETIMEDOUT) {
      throw TTransportException(TTransportException::TIMED_OUT, "THRIFT_ETIMEDOUT");
    }

在这段时间之后,似乎有什么东西正在重置连接。 如果以高频率调用该方法,则不会发生超时。

Thrift 工作正常,其他基于套接字的通信也显示此行为。 根本原因是运行服务器的 VMware 虚拟机。网络模式(桥接、NAT 或仅主机)没有影响。 通过将服务器移动到物理机上,问题已得到解决。 linux的网络配置很可能有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM