【发布时间】: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");
}
在此之后似乎有什么东西正在重置连接。 如果该方法被高频率调用,则不会发生超时。
【问题讨论】: