<html><head><base href="x-msg://34/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I agree with everything Andy said and absolutely needed to be able to set maxThreads in our TorqueBox benchmarks. There may be some hypothetical reason I shouldn't need to set maxThreads but in practice the performance before and after was night and day once a hit a high enough concurrent client load. The defaults of 512 * # of CPUs was way too high - 4096 http threads on my 8 CPU benchmark server kills performance and eats up way too many resources.<div><br></div><div>Ben</div><div><br><div><div>On Oct 20, 2011, at 5:41 PM, Andrig Miller wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div><div style="font-family: Arial; font-size: 12pt; color: rgb(0, 0, 0); ">Well, right now based on my testing, if you use the JBoss Threads executor, then you get a performance degradation.&nbsp; It's not big, but its still there.<br><br>If you cannot set maxThreads, then I don't see how we can get the best possible performance on our benchmark efforts.&nbsp; As you increase the injection rate, and run on the large scale hardware we have planned, we will have to be able to set that.<br><br>So, I understand it can be abused, but so can a lot of settings.&nbsp; That's why we have the administration and performance tuning guides (which I will be updating for EAP 6).<br><br>Andy<br><br><hr id="zwchr"><blockquote style="border-left-width: 2px; border-left-style: solid; border-left-color: rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 12pt; "><b>From:<span class="Apple-converted-space">&nbsp;</span></b>"Jason T. Greene" &lt;<a href="mailto:jason.greene@redhat.com">jason.greene@redhat.com</a>&gt;<br><b>To:<span class="Apple-converted-space">&nbsp;</span></b>"Brian Stansberry" &lt;<a href="mailto:brian.stansberry@redhat.com">brian.stansberry@redhat.com</a>&gt;<br><b>Cc:<span class="Apple-converted-space">&nbsp;</span></b>"Andrig Miller" &lt;<a href="mailto:anmiller@redhat.com">anmiller@redhat.com</a>&gt;,<span class="Apple-converted-space">&nbsp;</span><a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br><b>Sent:<span class="Apple-converted-space">&nbsp;</span></b>Thursday, October 20, 2011 3:27:58 PM<br><b>Subject:<span class="Apple-converted-space">&nbsp;</span></b>Re: [jboss-as7-dev] Controlling Maximum Number of JBoss Web HTTP Threads<br><br>Remy has indicated in the past that he does not want to expose that<span class="Apple-converted-space">&nbsp;</span><br>level of tuning in the default jbossweb pool because of common<span class="Apple-converted-space">&nbsp;</span><br>misuse/misconception about the settings. (IIRC he was against maxthreads<span class="Apple-converted-space">&nbsp;</span><br>for example)<br><br>On 10/20/11 4:16 PM, Brian Stansberry wrote:<br>&gt; I don't know; I'd need the JBoss Web guys to answer that.<br>&gt;<br>&gt; On 10/20/11 4:00 PM, Andrig Miller wrote:<br>&gt;&gt; Do the configuration elements align with the default executor in JBoss<br>&gt;&gt; Web, which is not the JBoss Threads implementation?<br>&gt;&gt;<br>&gt;&gt; Andy<br>&gt;&gt;<br>&gt;&gt; ------------------------------------------------------------------------<br>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;*From: *"Brian Stansberry"&lt;<a href="mailto:brian.stansberry@redhat.com">brian.stansberry@redhat.com</a>&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;*To:<span class="Apple-converted-space">&nbsp;</span><a href="mailto:*jboss-as7-dev@lists.jboss.org">*jboss-as7-dev@lists.jboss.org</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp;*Sent: *Thursday, October 20, 2011 1:24:41 PM<br>&gt;&gt; &nbsp; &nbsp; &nbsp;*Subject: *Re: [jboss-as7-dev] Controlling Maximum Number of JBoss<br>&gt;&gt; &nbsp; &nbsp; &nbsp;Web HTTP Threads<br>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;If the web subsystem config is going to change, I'd like to see if it<br>&gt;&gt; &nbsp; &nbsp; &nbsp;can be made to work the way JCA does[1] -- a config element aligned<br>&gt;&gt; &nbsp; &nbsp; &nbsp;with<br>&gt;&gt; &nbsp; &nbsp; &nbsp;the appropriate pool type in the jboss-as-threads.xsd.<br>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;[1]<br>&gt;&gt; &nbsp; &nbsp; &nbsp;<a href="https://github.com/jbossas/jboss-as/blob/master/build/src/main/resources/docs/schema/jboss-as-jca_1_0.xsd#L120">https://github.com/jbossas/jboss-as/blob/master/build/src/main/resources/docs/schema/jboss-as-jca_1_0.xsd#L120</a><br>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;On 10/20/11 2:17 PM, Andrig Miller wrote:<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Good thing you looked at the code. I assumed that it impacted the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;threads. I guess the defaults have always been big enough for all the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;tests I have done then. We should open a JIRA on JBoss Web to add the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;maxThreads attribute to the XML schema that goes into domain.xml and<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;standalone.xml, and have it defined as read-write, so this can be<br>&gt;&gt; &nbsp; &nbsp; &nbsp;changed.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Andy<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;------------------------------------------------------------------------<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*From: *"Benjamin Browning"&lt;<a href="mailto:bbrowning@redhat.com">bbrowning@redhat.com</a>&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*To: *"Andrig Miller"&lt;<a href="mailto:anmiller@redhat.com">anmiller@redhat.com</a>&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Cc: *"<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><span class="Apple-converted-space">&nbsp;</span>Development"<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a>&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Sent: *Thursday, October 20, 2011 12:02:56 PM<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Subject: *Re: Controlling Maximum Number of JBoss Web HTTP Threads<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;The max-connections attribute has no impact on the maximum http<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;threads. If you look at the code, all it does is set the maximum<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;poller size and sendfile size for the underlying JIoEndpoint.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;To control the threads you either have to use an external executor<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;or set the maxThreads attribute on the protocol handler (which in<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;turn sets it on the underlying JIoEndpoint).<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Ben<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;On Oct 20, 2011, at 1:47 PM, Andrig Miller wrote:<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Ben,<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;I think all you have to do is set max-connections="n" to the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;number of threads you want. That's what I have been doing, and<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;based on looking at the running threads through JConsole, it<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;seems to work just fine. In terms of the executor attribute, and<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;setting up a pool using JBoss Threads, I have done extensive<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;testing. I usually see only a small degradation between the two,<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;like around 1% or so.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Of course, that may vary based on what executor you choose to<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;use, but I was using the unbounded queue thread thread pool with<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;good success. I also changed the keepalive time, to keep the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;threads around for at least an hour, so to avoid churn in my<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;testing between executions.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Andy<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;------------------------------------------------------------------------<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*From:*"Benjamin Browning"&lt;<a href="mailto:bbrowning@redhat.com">bbrowning@redhat.com</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:bbrowning@redhat.com">mailto:bbrowning@redhat.com</a>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*To:*"Andrig Miller"&lt;<a href="mailto:anmiller@redhat.com">anmiller@redhat.com</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:anmiller@redhat.com">mailto:anmiller@redhat.com</a>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Cc:*"<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:jboss-as7-dev@lists.jboss.org">mailto:jboss-as7-dev@lists.jboss.org</a>&gt;Development"<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;&lt;<a href="mailto:jboss-as7-dev@lists.jboss.org">mailto:jboss-as7-dev@lists.jboss.org</a>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Sent:*Thursday, October 20, 2011 10:32:01 AM<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;*Subject:*Controlling Maximum Number of JBoss Web HTTP Threads<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;I split this thread off from "Two thread pools section in<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;management API" since it's not directly related.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;In my testing I was never able to create an executor for<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;JBoss Web that didn't have dismal performance. Since<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;TorqueBox needs to be able to easily control the maximum<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;number of http threads we've written a simple service that<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;reads a system property and sets the http connector's<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;protocol handler's maxThreads. This works great and doesn't<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;incur the performance hit of using a separate executor. If<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;there's interest, we could submit a patch upstream to accept<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;a max-threads attribute on the connector definitions.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Ben<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;On Oct 20, 2011, at 12:15 PM, Andrig Miller wrote:<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;One thing that I have found with playing around with the<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;various subsystems, is JBoss Web. JBoss Web doesn't<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;expose a thread pool configuration, just a single<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;attribute called max-connections. It also then has an<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;"executor" attribute, which just takes a thread pool<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;name from the JBoss Threads configuration.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;So, this one is inconsistent with the other subsystems,<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;and I'm not sure if it should be changed to be<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;consistent or not, since the default doesn't use JBoss<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Threads. This would also complicate any "global" view in<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;the console.<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;Andy<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;_______________________________________________<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;jboss-as7-dev mailing list<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp; &gt; &nbsp;<a href="https://lists.jboss.org/mailman/listinfo/jboss-as7-dev">https://lists.jboss.org/mailman/listinfo/jboss-as7-dev</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; &nbsp; &nbsp; &nbsp;--<br>&gt;&gt; &nbsp; &nbsp; &nbsp;Brian Stansberry<br>&gt;&gt; &nbsp; &nbsp; &nbsp;Principal Software Engineer<br>&gt;&gt; &nbsp; &nbsp; &nbsp;JBoss by Red Hat<br>&gt;&gt; &nbsp; &nbsp; &nbsp;_______________________________________________<br>&gt;&gt; &nbsp; &nbsp; &nbsp;jboss-as7-dev mailing list<br>&gt;&gt; &nbsp; &nbsp; &nbsp;<a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br>&gt;&gt; &nbsp; &nbsp; &nbsp;<a href="https://lists.jboss.org/mailman/listinfo/jboss-as7-dev">https://lists.jboss.org/mailman/listinfo/jboss-as7-dev</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br>&gt;<br><br><br>--<span class="Apple-converted-space">&nbsp;</span><br>Jason T. Greene<br>JBoss AS Lead / EAP Platform Architect<br>JBoss, a division of Red Hat<br></blockquote><br></div>_______________________________________________<br>jboss-as7-dev mailing list<br><a href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/jboss-as7-dev">https://lists.jboss.org/mailman/listinfo/jboss-as7-dev</a><br></div></span></blockquote></div><br></div></body></html>