-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
John,
On 3/4/14, 1:17 PM, John Smith wrote:
> Tomcat 7.0.42 on RHEL6.
>
> Assume that Tomcat is serving only one jsp page. Say it just
> rewrites a parameter value from the querystring to the html within
> the jsp.
>
> Also assume that there are ~200,000 users attempting to access that
> page - say "almost simultaneously".
>
> What are the most relevant optimizations I can make to a single
> instance of tomcat for this scenario?
So you want the highest-performance solution to the above scenario?
As for Tomcat configuration, I would use the NIO connector with a
large number of max connections (you'll have to see what practical
size to give it) and a large number of threads in your thread pool
(i.e. executor).
NIO gets you the benefit of not blocking waiting for a second (or
third, etc.) keepalive request to arrive over a connection before that
thread can be used to do some real work. If all connections are
"Connection:close" then this is less of an issue.
If you have a big, beefy CPU relative to your Internet connection's
bandwidth, you should probably enable compression on the connector:
that will help you push bytes back to the client faster. You'll have
to test whether or not this actually helps you in your particular
situation, because you are trading CPU time for I/O time.
Define only one <Host> element in your server.xml, and name it
whatever your public hostname is: there is a slight optimization in
the mapper that works slightly faster if you have exactly one <Host>
element, and if that name matches the "Host" header from the request.
(There is an even faster case for where there are no elements in the
host list, then the default is used, but I'm not sure how to get a
zero-element host list and yet still have a default host).
Don't add any <Valve>s or <Filter>s that you don't absolutely need.
I would remove any intermediate proxies that don't absolutely need to
be there (like Apache httpd, Microsoft IIS, nginx, etc.). Tomcat
itself comes fairly well-configured for performance out of the box
(except for the use of the BIO connector, which gets the job done and
it very stable and reliable, but certainly does not win any speed
contests).
If you want to optimize the hell out of the experience, you'll want to
dump JSP: there's a lot of setup that goes into creating the
environment in which a JSP page runs, and you don't mention that you
need any of it above.
If you just need to write HEADER + some value from query string +
FOOTER, then try to do that all in 3 I/O writes, like this would be in
a servlet:
static final String HEADER = "<html><head><title>My Fast
Page</title></head><body><h1>My Fast Page</h1><p>Your parameter value
is <i>";
static final String FOOTER = "</i></p></body></html>";
void doGet(request, response) {
ServletOutputStream out = response.getOutputStream();
out.print(HEADER);
out.print(request.getParameter("key"));
out.print(FOOTER);
}
To save network bandwidth, remove any non-essential whitespace from
your text as I have done above.
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBCAAGBQJTFiFPAAoJEBzwKT+lPKRYR5wP/iiaEcMIFxKBE9Rr9EP6ZhA+
+fxznQ1QED232LlhvAAcAiAjnOOv/dzLxmC62dai9EZoV0/24WcMpYaEjaRo2jZu
jIyeGb4Dn4ommJj7aPG+yesPRRTBY6j23SIauWbnRNBCggn/YCpOnjERuUHPtjMO
G4kDeZaHGGjfirwTuPYCKxiKlYow6C4H8HUzLH84BvuktPPCgO16qbtCSCI0st+b
av4pza4lzKSO3YsjS3PBNa7eI9q7zvLYqTeB7TziyLq7Jf5OOWPL73qUVJUgb54A
M6GzvsdIYWHCigGZff0iHT3oNbDEteSVK7TPLP8+XzI8x8F+xsn5G8yv5wXhStDH
44g2E2hZLwLhaaSiJqtxKGb2kTwoJA+CX33MnbngOkMGUO7SmRMlkx77d08GiYoA
uvOKep8zz7R4Is8EZu5sdzUQSxPx2Y59uzQNMiBeER47d+hfu4aOl241QUrN2osO
NsddzzXB6i9auvdhDdGUkNwbT2Iy8NtMKPBUvM+LWz2GC+8+/WyVeRjhQ5N3BUwc
5YHCKrHVEgZR/NO7j6HvsqXBdUnbt8JNFp0O6XtkCUtlilDabki50wIqVXn/jEmc
rG9YJKYDFDQdxJSEnpeZEw5+iDmORkSyIOEMw5htqVCCgeBRp2jeATVWKpdcM76G
EJD/P6bdni3Vj7kthhjs
=ADJI
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]