apache thrift C++ 服务器超时客户端连接

apache thrift C++ server timeout client connections

我在 C++ 中使用 apache thrift 0.9.3 和具有 15 个线程限制的 TThreadPoolServer。

我 运行 遇到一个问题,远程客户端可能会连接到我的服务器,因此用完了一个线程,但之后永远不会断开连接。服务器上的连接线程将永远保持 "in use"。如果这种情况发生 15 次,我的服务器就会阻塞。

有没有办法告诉服务器在设定的时间后断开客户端连接?这似乎是一个如此明显的问题,我觉得一定有一个我错过的解决方案。

经过多方搜索和询问,似乎方法是在传递给 TServerTransport 的 TServerSocket 上调用 setKeepAlive(true)。

当然,在执行此操作后,我确实看到线程池计数在杀死客户端后大约 30 分钟再次下降。我似乎找不到改变超时长度的方法(setRecvTimeout() / setSendTimeout() 不要改变这个)。