Can anyone help regarding this ?

Update:--

A simple test on Tomcat 7.0.50/7.0.55 of Longpolling implementation using
JAX-RS 2.0 AsyncResponse mechanism.
I'm seeing the following the errors in the logs and a lot many CLOSE_WAIT
connections, Why ?

Exception in thread "http-nio-8080-ClientPoller-0"
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
        at java.util.HashMap$KeyIterator.next(HashMap.java:960)
        at
java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.timeout(NioEndpoint.java:1437)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1231)
        at java.lang.Thread.run(Thread.java:744)

[ERROR] [2014-08-29 05:54:19,622] [-8080-ClientPoller-0]
[he.tomcat.util.net.NioEndpoint] Error allocating socket processor
java.lang.NullPointerException
        at
org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:742)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1273)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1226)
        at java.lang.Thread.run(Thread.java:744)

[ERROR] [2014-08-29 05:48:35,941] [-8080-ClientPoller-1]
[he.tomcat.util.net.NioEndpoint] Error allocating socket processor
java.lang.NullPointerException
        at
org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:742)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1273)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1226)
        at java.lang.Thread.run(Thread.java:744)

Exception in thread "http-nio-8080-ClientPoller-0"
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
        at java.util.HashMap$KeyIterator.next(HashMap.java:960)
        at
java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.timeout(NioEndpoint.java:1437)
        at
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1231)
        at java.lang.Thread.run(Thread.java:744)






On Fri, Aug 22, 2014 at 5:25 PM, anurag gupta <anurag.11...@gmail.com>
wrote:

> Ok, So the requests will be idle upto the long poll timeout if no response
> is generated.
>
> So in our test setup we have 60 clients and each makes 5000 requests.
>  These 5000 requests are made at the same time and renewed(i.e. a new
> request is made in a loop ) as soon as
> the app server sends response (which in the worst case i.e no response was
> available, will be a empty json)
>
> ​A few minutes back I tried with processorCache="500000", but still
> tomcat(8.0.9) logged OOM GC Overhead Limit Exceeded and on server around
> 70K sockets were open (from /proc/net/sockstat​) .
>
>
>
>
>
> On Fri, Aug 22, 2014 at 5:03 PM, Mark Thomas <ma...@apache.org> wrote:
>
>> On 22/08/2014 11:22, anurag gupta wrote:
>> > Executors:-
>> >
>> >  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
>> > maxThreads="2048" minSpareThreads="1024" maxQueueSize="10000"
>> > prestartminSpareThreads="true"/>
>> >
>> > This is the connector config :-
>> >
>> > <Connector port="8080"
>> > protocol="org.apache.coyote.http11.Http11NioProtocol"
>> redirectPort="8443"
>> > acceptCount="100000" maxConnections="-1"
>> >                    acceptorThreadCount="5" executor="tomcatThreadPool"
>> > connectionLinger="-1" socket.soLingerOn="false" socket.soLingerTime="0"
>> >                    socket.soReuseAddress="true" connectionTimeout="1000"
>> > socket.soTimeout="1000" keepAliveTimeout="0" maxKeepAliveRequests="1"
>> >                    socket.soKeepAlive="false" />
>> >
>> >> The only way to know for sure is if you use a profiler and find out
>> > where you application is using memory.
>> >
>> > Yes we do cache the AsyncResponse objects till the timeout happens or
>> some
>> > response is generated.
>> >
>> >> How long does a request take to process? Exactly how many concurrent
>> > requests are you trying to support?
>> > A long poll request has a timeout of 10 mins (in this test), but we
>> want to
>> > have it upto 60 mins if feasible.
>> > We are trying to figure out the max achievable concurrent requests.
>>
>> Concurrent requests != concurrent connections.
>>
>> Concurrent requests (i.e. where the server is actively doing something
>> with a connection) will be limited to 2048 with that configuration
>> (maximum number of available threads).
>>
>> Concurrent connections will depend on you test environment. For a single
>> Tomcat HTTP connector, there is a hard limit of 64k connections per
>> client but you can use multiple clients (each with their own IP address)
>> to get around that. After that, you'll hit OS limits - that should be
>> around several hundred k.
>>
>> Mark
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
>
>
> --
> Regards
> Anurag
>



-- 
Regards
Anurag

Reply via email to