As promised, here are my notes on getting a serious JBoss-Tomcat
deployment functional on Windows 2000 Server, assuming you aren't
in a position to use a real operating system.

So I've finally managed to get JBoss-Tomcat working on a dual-Xeon 4GB
Windows 2000 server.

The problems were:

1) Use of the /3GB boot.ini switch radically reduces the number of PTEs
   available.  This results in a very low limit on concurrent threads.

   If you don't need >2GB virtual address space per process,
   don't enable /3GB.  If you can't live without it, see;en-us;313707 for
   information on tuning SystemPages to increase available PTEs.

2) The default Windows 2000 TCP connection backlog is ridiculously
   low (20).  This is a problem for when the server is configured to
   ramp the number of connection handlers up as load increases. See;en-us;142641 for
   information on enabling dynamic backlog handling.

3) The default Windows 2000 local user socket limit is ridiculously
   low (5000).  This is a problem when the server accesses resources
   (such as databases and application containers) over the network. See;en-us;319502 for
   information on increasing this limit to the defaults found on most
   sensible server platforms.

4) [SPECULATION] Windows 2000 imposes an immutable limit on the number
   of open files / handles allowed for a process started from a CMD.EXE
   prompt.  See for
   information on installing JBoss-Tomcat as an NT service using the
   Java Service Wapper.

5) [SPECULATION] Windows 2000 imposes a 48MB heap limit for processes
   started via the desktop (22MB for Terminal Services desktops).  The
   solution for (4) above applies.

I don't have KB article references to support (4) and (5).  I read stuff
that led me to believe them, but didn't record references.  However,
running Jboss-Tomcat as an NT service avoided undiagnosed resource
starvation problems not covered in (1) through (3).

With these changes made, a Windows 2000 server can be made to service
a serious JBoss-Tomcat deployment configured to operate under the kind
of load that Unix-like operating systems tend to handle out of the box.
The host is able to service at least 2,000 concurrent HTTP connections
without application server failure.

This does _not_ mean that a Windows 2000 server's _performance_ will
match that of a Unix-like operating system.  At this stage, I'm just
trying to get this rubbish to stay on its feet when I poke it with a
pointy stick.

Windows sucks.

This email is sponsored by:ThinkGeek
Welcome to geek heaven.
JBoss-user mailing list

Reply via email to