我在 C++ 中使用 apache thrift 0.9.3 以及具有 15 个线程限制的 TThreadPoolServer。
我遇到了一个问题,远程客户端可能会连接到我的服务器,并因此耗尽一个线程,但永远不会断开连接。服务器上的连接线程将永远保持“使用中”状态。如果这种情况发生 15 次,我的服务器就会阻塞。
有没有办法告诉服务器在设定的时间后断开客户端的连接?这似乎是一个如此明显的问题,我觉得一定有一个我错过的解决方案。
最佳答案
经过大量搜索和询问,似乎可以在传递给 TServerTransport 的 TServerSocket 上调用 setKeepAlive(true) 。
当然,在执行此操作后,我确实看到在杀死客户端后 30 分钟左右线程池计数再次下降。我似乎找不到更改超时长度的方法(setRecvTimeout()/setSendTimeout() 不会更改此设置)。
关于c++ - apache thrift C++ 服务器客户端连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051262/