On 11/05/18 18:21, Максим Гумеров wrote:
> Hi! I am running Tomcat 8 as part of Spring Boot application. As usual,
> acceptCount defaults to 100 and maxThreads to 200. According to
> https://tomcat.apache.org/tomcat-8.5-doc/config/http.html#NIO_specific_configuration
> I am expecting Tomcat to accept 200 "long" requests (each taking say 20
> seconds to complete), then accept 100 more connections but not start
> reading from them, and then reject any connection requests beyond that.
> That's why this is the expected behavior: acceptCount = "The maximum queue
> length for incoming connection requests when all possible request
> processing threads are in use. Any requests received when the queue is full
> will be refused." So, when first 200 requests are all taken by 200
> processing threads, next 100 will go to the queue and subsequent will be
> ignored. At least that's how it reads to me.
> 
> But what I actually see on my Mac is, tomcat successfully accepts a little
> short of 1000 such connections (I just didn't try more connections) made
> within 5 seconds. It processes no more than 200 requests at a time, but
> does not reject connections after 300th one, as one would expect.
> 
> What's the explanation for that? Can the quoted documentation be imprecise
> or outdated? Or am I missing something in it?

acceptCount for NIO is passed in to ServerSocket.bind(SocketAddress,int)
as the 2nd parameter (backlog). The Javadoc for that method says:

<quote>
The backlog argument is the requested maximum number of pending
connections on the socket. Its exact semantics are implementation
specific. In particular, an implementation may impose a maximum length
or may choose to ignore the parameter altogether.
</quote>

It looks like it is being ignored in your JVM.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to