[英]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.