TL;DR - Running embedded Jetty with queuedThreadPool , new threads are not
being created
---

I am using Jetty version 9.0.6.v20130930 in embedded form by starting it
as-
http://pastebin.com/bztAwEMD

OS is 64 Bit Windows7 and JRE version is  1.7.0_13-b20 (also tested on
Linux JRE version 7u25-2.3.10-1ubuntu0.12.04.2 - same behavior is observed)

As you can see, I've set max # of threads to 100 and min to 10.

I've a monitor thread which prints threadpool status every 1 second. This
thread is started just after server.start() method. Here is what I am
observing (as soon as server is started and no request has been received by
Jetty yet)

*queuedThreadPool.getIdleThreads()* shows "6" and queuedThreadPool.getThreads()
shows "10"

Is this expected? Does it mean that out of 10 threads, 4 threads (10-6) are
ready for accepting connection? I think so because thread dump shows 4
threads in *Runnable *state.

To process requests, I am using AsyncServlets. My ThreadPoolExecutor for
async processing looks like this -
http://pastebin.com/mM0Vq8LN (core threads -10, max threads -  100)

When I send requests using apache ab tool, I am setting # of concurrent
requests to 100, and total # of requests to 1000.

Monitor thread of AsyncServlet shows expected result- I can see more
threads being created and when all of the requests are finished, threadpool
size reducing to core size however, when ab tool is running, I do NOT see
ANY change in Jetty thread pool- it still says there are 6 idle threads-
looking at JMX info through JConsole confirms same. Here is stacktrace of
one of the theads of QTP-

*Name: JettyQTP-36*
*State: TIMED_WAITING on
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@18dbe927
*
*Total blocked: 2  Total waited: 49,244*
*Stack trace: *
*sun.misc.Unsafe.park(Native Method)*
*java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)*
*
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
*
*org.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:390)
*
*
org.eclipse.jetty.util.thread.QueuedThreadPool.idleJobPoll(QueuedThreadPool.java:509)
*
*
org.eclipse.jetty.util.thread.QueuedThreadPool.access$700(QueuedThreadPool.java:48)
*
*
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:563)
*
*java.lang.Thread.run(Thread.java:724)*

So the question is - why is Jetty not creating more threads?

Cheers,
Gaurav
_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to