Thanks Chuck,

Our tape backup is a tape robot on a SAN storage network. All very Kosher 
in a controlled environment / high-powered room etc so I would be 
surprised if that was it. 

I like the idea of changing our backup routines. The thing that confuses 
me though is this - why does enabling Incremental Garbage collection ( 
which slows everyting down so much) solve the problem?

Iain.




"Goehring, Chuck Mr., RCI - San Diego" <[EMAIL PROTECTED]>
04/03/2003 04:02 PM
Please respond to "Tomcat Users List"

 
        To:     "Tomcat Users List" <[EMAIL PROTECTED]>
        cc: 
        Subject:        RE: Tomcat unstable - Dr. Watson. Why?


Iain,

Might also be that your tape drive draws so much current, it "browns out" 
the system.  I've seen this before.  A huge power supply might be in 
order.

Also, there is a nasty memory leak in j2sdk 1.4.1 that is not entirely 
cured by doing c/l args such as -Xxms256m -Xxmx256m.  This bug is not in 
1.4.0. (Ref bug 4724129 
http://developer.java.sun.com/developer/bugParade/bugs/4724129.html)

Chuck

-----Original Message-----
From: Goehring, Chuck Mr., RCI - San Diego 
Sent: Thursday, April 03, 2003 12:46 PM
To: Tomcat Users List
Subject: RE: Tomcat unstable - Dr. Watson. Why?


Iain,

Most backup software I've seen does so much I/O, anything else running 
will be so severely starved for CPU it may confuse itself to death. Backup 
software does this on purpose to get the process over with as quick as 
possible.  So, it may not affect an idle server process, but trying to do 
any kind of work while the backup is running is probably futile.  You can 
see this by being around when the backup is running.  I don't think there 
is a reliable way to lower the priority of the backup process on nt/2000 
unless the software itself has an option for it.

You probably need to setup a hot backup arrangement that pulls the data 
out of the database and writes it to another machine acting as a staging 
area for going to tape.  If you have other stuff on the server that needs 
to be backed up and you run 24x7, you will need to make other arrangements 
to back that data up.

Chuck

-----Original Message-----
From: Iain Sanderson [mailto:[EMAIL PROTECTED]
Sent: Thursday, April 03, 2003 9:32 AM
To: [EMAIL PROTECTED]
Subject: Tomcat unstable - Dr. Watson. Why?


Hello,

Tomcat is crashing on my  application server when my database server is 
busy with a running backup, which is every night from 12am to 7am ( 80 
Gb).

I'm running Tomcat 4.22 on Windows NT sp6  using the Java 1.41 VM as a 
service with the  -Xxms256m -Xxmx256m  switches set in the registry for 
the VM. (This is the same as setting these options in Catalina Opts when 
you're not running Tomcat as a service).

Tomcat.exe is throwing a Dr. Watson error

"Application exception occurred:
        App:  (pid=603)                   ----->which is tomcat.exe
        When: 4/3/2003 @ 1:45:16.203
        Exception number: c0000005 (access violation)
"
There is no information in Tomcat's logs at all.  Windows just shuts down 
the Tomcat service. Tomcat remains unstable like this as long as my 
database server  ( a different and very powerful box) is backing up.
Here are some clues:-

a) This instability is cured by enabling incremental garbage collection  ( 

-Xincgc JVM switch), but performance reduces by 300%. Our SQL  queries on 
the server  are large ( Operating room schedules etc. Queries take 0.15 to 

0.2 seconds, but page refreshes in Tomcat  5-6 seconds, which is 
acceptable. With incremental GC this increases to 17 seconds, which is 
not.)

I'm sure the problem is due to database connections, but I can't fault my 
code. I'm using Tomcat's JNDI datasource pool (commons DBCP), set in 
server.xml.  I have been very careful to close all my connections using 
the following code straight out of Tomcat's documentation (see below)

Can anybody help? I've been chasing this for some time now and have lost 
most of my hair.

Iain

Below is datasource configuration from web-app context in server.xml and 
sample of database connection code.

code.


Connection conn = null;
  Statement stmt = null;  // Or PreparedStatement if needed
  ResultSet rs = null;
  try {
    conn = ... get connection from connection pool ...
    stmt = conn.createStatement("select ...");
    rs = stmt.executeQuery();
    ... iterate through the result set ...
    rs.close();
    rs = null;
    stmt.close();
    stmt = null;
    conn.close(); // Return to connection pool
    conn = null;  // Make sure we don't close it twice
  } catch (SQLException e) {
    ... deal with errors ...
  } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rs != null) {
      try { rs.close(); } catch (SQLException e) { ; }
      rs = null;
    }
    if (stmt != null) {
      try { stmt.close(); } catch (SQLException e) { ; }
      stmt = null;
    }
    if (conn != null) {
      try { conn.close(); } catch (SQLException e) { ; }
      conn = null;
    }
  }





 Server.xml Settings are:-
<ResourceParams name="jdbc/saturn">
            <parameter>
              <name>factory</name>
 <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </parameter>
            <parameter>
              <name>maxActive</name>
              <value>100</value>
            </parameter>
            <parameter>
              <name>maxWait</name>
              <value>100000</value>
            </parameter>
            <parameter>
              <name>password</name>
              <value></value>
            </parameter>
            <parameter>
              <name>url</name>
              <value>jdbc:sybase:Tds:</value>
            </parameter>
            <parameter>
              <name>driverClassName</name>
              <value>com.sybase.jdbc2.jdbc.SybDriver</value>
            </parameter>
            <parameter>
              <name>maxIdle</name>
              <value>30</value>
            </parameter>
            <parameter>
              <name>username</name>
              <value></value>
            </parameter>
            <parameter>
              <name>removeAbandoned</name>
              <value>true</value>
            </parameter>
           <parameter>
              <name>removeAbandonedTimeout</name>
              <value>120</value>
            </parameter> 
            <parameter>
              <name>logAbandoned</name>
              <value>false</value>
            </parameter>
            <parameter>
              <name>validationQuery</name>
              <value>SELECT * FROM "dev_team"."VersionInfo"</value>
            </parameter> 
          </ResourceParams>

 

---------------------------------------------------------------------
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