我在C ++中使用带有15个线程限制的TThreadPoolServer的apache thrift 0.9.3。
我遇到了一个问题,远程客户端可能会连接到我的服务器,因此用完一个线程,但永远不会断开连接。然后服务器上的那个连接线程保持"正在使用"永远。如果发生这种情况15次,我的服务器会阻塞。
有没有办法告诉服务器在设定的时间后断开客户端?这似乎是一个明显的问题,我觉得必须有一个我错过的解决方案。
答案 0 :(得分:1)
经过多次搜索和询问后,似乎这样做的方法是在传递给TServerTransport的TServerSocket上调用setKeepAlive(true)。
当然,在执行此操作后,我确实看到线程池数在杀死客户端后大约30分钟后再次下降。我似乎找不到改变超时长度的方法(setRecvTimeout()/ setSendTimeout()不改变它)。