<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Java Scalability 101: Volume 1, Web Servers</title>
	<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/</link>
	<description>Antispam, the Internet, and General Commentary.</description>
	<pubDate>Thu, 07 Aug 2008 18:29:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>

	<item>
		<title>By: Carlos</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-228</link>
		<author>Carlos</author>
		<pubDate>Tue, 20 Nov 2007 13:55:02 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-228</guid>
		<description>Hi Mark,
       With the propose configuration for 1000 clients, how can we estimate system resources (CPU and MEM) based on the number of simultaneous users</description>
		<content:encoded><![CDATA[<p>Hi Mark,<br />
       With the propose configuration for 1000 clients, how can we estimate system resources (CPU and MEM) based on the number of simultaneous users</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: napyfab:blog&#187; Blog Archive &#187; links for 2007-09-25</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-13</link>
		<author>napyfab:blog&#187; Blog Archive &#187; links for 2007-09-25</author>
		<pubDate>Tue, 25 Sep 2007 23:41:06 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-13</guid>
		<description>[...] Heluna Weblog Â» Java Scalability 101: Volume 1, Web Servers (tags: performance apache scalability tomcat j2ee java webservice http) [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Heluna Weblog Â» Java Scalability 101: Volume 1, Web Servers (tags: performance apache scalability tomcat j2ee java webservice http) [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael P</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-11</link>
		<author>Michael P</author>
		<pubDate>Mon, 24 Sep 2007 22:56:51 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-11</guid>
		<description>Hi Mark!

Thanks for your answer!
My use case is a little bit special in that Tomcat is not running a "normal" web application but instead is used as the backend for a desktop application which performs requests over XML-RPC. Each of these requests is seperate (except the login-sequence) and is performed approx. every 2 minutes by each client. So I think maxKeepAliveRequests=â€1â€³ is justified in this special case. (for normal web applications, of course you are right!).
Using NIO, sendfile and Comet-Servlets for large requests/responses I think there is no need for a native web server (well, maybe except for load balancing.)

Looking forward to your next article!
Michael</description>
		<content:encoded><![CDATA[<p>Hi Mark!</p>
<p>Thanks for your answer!<br />
My use case is a little bit special in that Tomcat is not running a &#8220;normal&#8221; web application but instead is used as the backend for a desktop application which performs requests over XML-RPC. Each of these requests is seperate (except the login-sequence) and is performed approx. every 2 minutes by each client. So I think maxKeepAliveRequests=â€1â€³ is justified in this special case. (for normal web applications, of course you are right!).<br />
Using NIO, sendfile and Comet-Servlets for large requests/responses I think there is no need for a native web server (well, maybe except for load balancing.)</p>
<p>Looking forward to your next article!<br />
Michael</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-10</link>
		<author>Mark</author>
		<pubDate>Mon, 24 Sep 2007 21:59:57 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-10</guid>
		<description>Hi James,

We have not tried the NIO solutions as of yet; while NIO certainly looks promising from a throughput standpoint, we still enjoy the versatility and configuration that Apache allows.  Many additional benefits that Apache has had years to refine are just now starting to be implemented in Tomcat/Resin/etc.

Michael-- first of all, using MaxKeepAliveRequests set to 1 will be an incredible strain upon your app server as it closes and reopens TCP/IP connections.  MaxKeepAliveRequests should always be set based upon the content of your average page; if your page has 10 or 15 elements per page, that should be the minimum number of MaxKeepAliveRequests; you want users to have an incredibly fast initial load (even with pipelining).

The documentation around the Tomcat mod_jk connector applies only for requests that get sent through to the application server.  Additionally, the documentation doesn't take into account the maximum amount of concurrent clients available using a webserver vs. strictly the application server.  The slight performance hit of sending one page through the connector is more than made up for by the speed of the web server combined with its versatility.

Thanks for the comments! -Mark</description>
		<content:encoded><![CDATA[<p>Hi James,</p>
<p>We have not tried the NIO solutions as of yet; while NIO certainly looks promising from a throughput standpoint, we still enjoy the versatility and configuration that Apache allows.  Many additional benefits that Apache has had years to refine are just now starting to be implemented in Tomcat/Resin/etc.</p>
<p>Michael&#8211; first of all, using MaxKeepAliveRequests set to 1 will be an incredible strain upon your app server as it closes and reopens TCP/IP connections.  MaxKeepAliveRequests should always be set based upon the content of your average page; if your page has 10 or 15 elements per page, that should be the minimum number of MaxKeepAliveRequests; you want users to have an incredibly fast initial load (even with pipelining).</p>
<p>The documentation around the Tomcat mod_jk connector applies only for requests that get sent through to the application server.  Additionally, the documentation doesn&#8217;t take into account the maximum amount of concurrent clients available using a webserver vs. strictly the application server.  The slight performance hit of sending one page through the connector is more than made up for by the speed of the web server combined with its versatility.</p>
<p>Thanks for the comments! -Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael P</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-9</link>
		<author>Michael P</author>
		<pubDate>Mon, 24 Sep 2007 21:23:25 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-9</guid>
		<description>Hi!
From the Tomcat docs: (http://tomcat.apache.org/tomcat-5.5-doc/connectors.html)
"The HTTP connector is setup by default with Tomcat, and is ready to use. This connector features the lowest latency and best overall performance.
[...]
When using a single server, the performance when using a native webserver in front of the Tomcat instance is most of the time significantly worse than a standalone Tomcat with its default HTTP connector, even if a large part of the web application is made of static files."

Doesn't that mean it is prefered to NOT use a "real" web server in front of Tomcat (with, say, mod_jk)? How many Tomcat instances are needed for a native web server to start being more performant if I configure my Tomcat Http-Connectors according to the points you stated (means maxKeepAliveRequests="1" and so on)?

Thanks!</description>
		<content:encoded><![CDATA[<p>Hi!<br />
From the Tomcat docs: (http://tomcat.apache.org/tomcat-5.5-doc/connectors.html)<br />
&#8220;The HTTP connector is setup by default with Tomcat, and is ready to use. This connector features the lowest latency and best overall performance.<br />
[&#8230;]<br />
When using a single server, the performance when using a native webserver in front of the Tomcat instance is most of the time significantly worse than a standalone Tomcat with its default HTTP connector, even if a large part of the web application is made of static files.&#8221;</p>
<p>Doesn&#8217;t that mean it is prefered to NOT use a &#8220;real&#8221; web server in front of Tomcat (with, say, mod_jk)? How many Tomcat instances are needed for a native web server to start being more performant if I configure my Tomcat Http-Connectors according to the points you stated (means maxKeepAliveRequests=&#8221;1&#8243; and so on)?</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Law</title>
		<link>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-8</link>
		<author>James Law</author>
		<pubDate>Mon, 24 Sep 2007 20:42:15 +0000</pubDate>
		<guid>http://blog.heluna.com/2007/09/21/java-scalability-101-volume-1-web-servers/#comment-8</guid>
		<description>I am curious if you have tried any of the NIO enabled solutions out there. Seems like there is a trend away from webservers for application hosting on java:

http://www.javalobby.org/java/forums/m92139905.html</description>
		<content:encoded><![CDATA[<p>I am curious if you have tried any of the NIO enabled solutions out there. Seems like there is a trend away from webservers for application hosting on java:</p>
<p><a href="http://www.javalobby.org/java/forums/m92139905.html" rel="nofollow">http://www.javalobby.org/java/forums/m92139905.html</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
