You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Ben Craig (JIRA)" <ji...@apache.org> on 2015/04/06 18:00:14 UTC

[jira] [Commented] (THRIFT-3084) C++ add concurrent client limit to threaded servers

    [ https://issues.apache.org/jira/browse/THRIFT-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14481350#comment-14481350 ] 

Ben Craig commented on THRIFT-3084:
-----------------------------------

I think that the ThreadManager class already provides the desired functionality, at least for the TThreadPoolServer.  ThreadManager::newSimpleThreadManager() creates a threadManager with a maximum thread count.  Users of TThreadPoolServer can provide their own implementation of ThreadManager.  Alternatively, the simpleThreadManager can be manipulated / invoked by other classes.  It is useful to do so from a handler interface factory for instance.

> C++ add concurrent client limit to threaded servers
> ---------------------------------------------------
>
>                 Key: THRIFT-3084
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3084
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Library
>    Affects Versions: 0.8, 0.9, 0.9.1, 0.9.2
>            Reporter: James E. King, III
>
> The TThreadedServer and TThreadPoolServer do not impose limits on the number of simultaneous connections, which is not useful in production as bad clients can drive a server to consume too many file descriptors or have too many threads.
> 1. Add a barrier to TServerTransport that will be checked before accept().
> 2. In the onClientConnected override (see THRIFT-3083) if the server reaches the limit of the number of accepted clients, enable the barrier.
> 3. In the onClientDisconnected override if the count of connected clients falls below the maximum concurrent limit, clear the barrier.  This will allow the limit to be changed dynamically at runtime (lowered) with drain off clients until more can be accepted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)