[ https://issues.apache.org/jira/browse/THRIFT-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King, III closed THRIFT-3084. -------------------------------------- > 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 > 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)