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]