【问题标题】:Apache Thrift timeoutApache Thrift 超时
【发布时间】:2020-12-02 16:27:29
【问题描述】:

我在 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 会在下面的代码 sn-p 中抛出异常,该异常位于 TSocket.cpp 中

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

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

【问题讨论】:

    标签: c++ timeout thrift


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-28
      • 2017-08-20
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2013-02-23
      • 2013-10-16
      相关资源
      最近更新 更多