I told you wrong about how to set the memory limits when running as a
service. You can set the memory options in the Windows registry using
regedit.

In regedit, open HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache
Tomcat 4.1\Parameters
Add a string value named: JVM Option Number 3 and set it's value to -Xms100m
Add a string value named: JVM Option Number 4 and set it's value to -Xmx100m
Change the JVM Option Count to 5 (was 3 at least on my machine. The value of
this field must match the number of JVM Option Number x values).

You can also write log statements to check allocated and available memory.
Following is an example thread that we used. I've cut out a few parts that
are specific to our application and the formatting is screwed up from
cutting and pasting it, but should be close enough to get you going.

public class MemoryMonitor implements Runnable {
    private boolean done = false;
   private Runtime rt = Runtime.getRuntime();

    public MemoryMonitor() {
        Thread theThread = new Thread(this);
        theThread.setDaemon(true);
        theThread.setPriority(Thread.MIN_PRIORITY);
        theThread.start();
    }


    public void run() {
        while (!done) {
            try {
    long freeMemory = rt.freeMemory()/1024;
    long totalMemory = rt.totalMemory()/1024;
    long memoryUsed = (totalMemory-freeMemory)/1024;
    long allocatedMemory = (totalMemory/1024);
             AppLog.info("[Memory Monitor] -- "+new
Timestamp(System.currentTimeMillis()).toString()+" --- Memory Allocated:
"+(int)allocatedMemory+"k");
    AppLog.info("[Memory Monitor] -- "+new
Timestamp(System.currentTimeMillis()).toString()+" --- Memory Used:
"+(int)memoryUsed+"k");
    rt.gc();
    if(allocatedMemory>totalMemory){

    }
                Thread.sleep(

MemoryMonitorProperties.getInstance().getCheckMemoryInterval());
            } catch (Exception ie) {
                AppLog.error(AppError.getStackTraceAsString(ie));
            }
        }
  AppLog.info("MemoryMonitor terminated.");
    }
}

----- Original Message -----
From: "Robert Porter" <[EMAIL PROTECTED]>
To: "'Tomcat Users List'" <[EMAIL PROTECTED]>
Sent: Saturday, August 02, 2003 11:34 PM
Subject: RE: Tomcat 4.1x running as NT Service Issue


I am not sure why we are not running 1.4, but the image from corporate has
1.3.1 and we have been told to live with it. We are running pretty much the
same configuration from what you describe but with drastically different
results.

I am checking on JVM settings, and I will try what you suggest.  The laptops
are Dell and IBM late models with 256 MB of memory and large fast drives so
I don't think it's the hardware.  All running W2K Pro with SQL Server 2000
Std Ed. We are using an older JDBC driver, what JDBC driver are you using?

-----Original Message-----
From: Nathan Ward [mailto:[EMAIL PROTECTED]
Sent: Saturday, August 02, 2003 10:27 PM
To: Tomcat Users List
Subject: Re: Tomcat 4.1x running as NT Service Issue


I'm not sure that this is it, but you might try setting the JVM min and max
memory limits when starting Tomcat by adding the following to
$CATALINA_HOME\bin\catalina.bat:

set JAVA_OPS = -Xms100m -Xmx100m

Default for the JVM I believe should be 64mb, but who knows.

Why are you using jdk 1.3.1? Do you have existing code that is not
compatible with jdk 1.4? We are running Tomcat 4.1.24 as a service under
Windows 2000 Server accessing an SQL Server database on the same machine
with JDK 1.4.1_01 and it is working.

   Nathan

----- Original Message -----
From: "Robert Porter" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, August 02, 2003 6:57 PM
Subject: Tomcat 4.1x running as NT Service Issue


I have scanned all the archives, and have seen some issues that are similar
but not quite the same so I am posting this request.

We are running Tomcat 4.1.24 Binary release, as a Service on Windows 2000
SP3 and SP4 Pro version. No JSP just servlets. The Tomcat instance is
hosting 2 servlets that talk to a local SQL Server 2000 database on the same
machine. A VB 6 client is talking to the servlets via http post etc, and
exchanging XML documents for requests and replies.

Running as a Service, with JDK 1.3.1 as the JVM the service will crash after
about 10 minutes of activity. Just prior to the crash, available memory will
decrease to 0 and the system will slow to a crawl with a lot of disk
activity, paging I imagine.

Running Tomcat in a window alleviates the problem entirely, so I am assuming
there are some parameters that are being passed via the Startup.bat file
that are not happening with the service. Or perhaps to the JVM, I am very
new to Tomcat so I am not sure how to accomplish this.  However we really
want to have Tomcat running as a service since this is a laptop app being
deployed to hundreds of our users, and we don't want them mucking about with
the Window created by running Tomcat as a windowed service.

Plus, having it run as a service means it is one less thing to worry about
in our application code. However we can't deploy the app if it crashes every
10 minutes.  Any help or suggestions would be appreciated. RP2C Inc
http://www.rp2c.com [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to