2017-03-27 9 views
1

私は、スレッド制限が15のTThreadPoolServerを使用してC++で0.9.3のthriftを使用しています。apache thrift C++サーバタイムアウトクライアント接続

私はリモートクライアントが自分のサーバーに接続してスレッドを使い切ってしまうことがありますが、決して切断しないという問題が発生しています。サーバー上のその接続スレッドは、「使用中」のままです。これが15回起こると、私のサーバーがブロックされます。

設定時間が経過した後にサーバーにクライアントを切断するよう指示する方法はありますか?これは明らかな問題のようですが、私が逃した解決策が必要だと感じています。

答えて

1

多くの検索と尋ねが終わった後、TServerTransportに渡されたTServerSocketに対してsetKeepAlive(true)を呼び出す方法があるようです。

これを実行した後、クライアントを強制終了した後、スレッドプールの数が30分ほどで再び低下することが分かります。私は(setRecvTimeout()/ setSendTimeout()はこれを変更しないでください)しかし、タイムアウトの長さを変更する方法を見つけることができないようです。