[
https://issues.apache.org/jira/browse/THRIFT-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James E. King, III reopened THRIFT-3084:
----------------------------------------
Assignee: James E. King, III
> 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
> Assignee: James E. King, III
> Fix For: 0.9.3
>
> Attachments: THRIFT-3084-on-3083.v2.patch
>
>
> 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.
> With TThreadPoolServer one can set the limit on the number of threads,
> however the server will use one additional file descriptor because the
> serve() routine does not block until after accepting the threadManager size +
> 1 sockets.
> With TThreadedServer there was no built-in way to throttle.
> Give the serve() loop is the only code capable of adding a client, the
> solution is to add a Monitor to the TServerFramework and check the number of
> concurrent clients immediately before calling TServerTransport::accept() to
> get another client, and to track the number of clients that are still alive
> (their smart pointer hasn't been destroyed).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)