Hi,

First off - I want to establish my background a little bit.  The reason will
become clear in a paragraph or two.

I've been using SAPDB on production web sites for 18 months. 

The first generation of the site was Windows 2000 SP2 + ASP VBScript. Later
upgraded to Windows 2000 SP3 without problems.  Also updated SAPDB to
7.3.0.25 and ODBC 7.3.0.28.   i386.  A single machine with dual CPU hosts
both the web site and SAPDB at the same time, using localhost as the ODBC
connection path.  I also have custom replication in place where three
servers each contain a complete copy of the database by all exchanging
INSERT / UPDATE / DELETE statements (via text files) in peer to peer fashion
every 2 minutes.  Over 5,000,000 primary table records per year are entered
by web site users.  There are also a number of Windows Scripting Host (WSH)
VBScript agents that run in loops to process web site tasks.  The
replication is also done with a WSH agent.  In other words, the entire site
is VBScript + ODBC, using dynamic SQL.

The second generation site is now 1 month old.  The major changes 1) Is now
Windows 2000 SP3.  2.) the site now consists of TWO separate servers, one is
running SAPDB and the other is running the web site.  3)  The web site is
now ASP.NET and ODBC.NET but still built using all dynamic SQL.  Replication
is done with the same VBScript engines as before.   The major difference is
that now the ODBC driver is connecting to a 2nd database server (machine)
instead of running both on the same machine.


The problem
==============
Before we moved to two machines per site (one database, one web)...
everything was very stable in the SAPDB ODBC driver.  But now we are getting
problems.

Given we have two duplicate sites (one database server, one web server), it
is pretty easy to know that the problem isn't hardware or corrupted install.
Each install was "hand built" with the same procedure, not a "clone" or
anything.  The databases are replicated one INSERT/UPDATE/DELETE at a time,
no chance of a problem in a binary backup or other glitch.

Two systems of the problem that we never saw with the first generation
design:

1.  At times the ODBC calls just stall.  All statements, including SELECTs.
It is "system wide" on the web server, even stand-alone WSH agents will
stall.  CPU is normal (under 10% usage), disk looks fine, network working -
but the SAPDB ODBC calls all hang.  I have gone so far as to COLD / WARM the
database server and the ODBC calls are still "stuck."   Typically these last
for about 30 seconds to 10 minutes, then just magically go away.  During
that time, I have opened up network tests to ensure that the database <--->
web server can talk, no problem.  This happens about once every 4 days, with
a 24x7 web site.

2. Even more rare, and what finally prompted me to write this post to the
list... we have a crash in the ODBC driver.

The system has called a custom component and that component has failed and
generated an exception. This indicates a problem with the custom component.
Notify the developer of this component that a failure has occurred and
provide them with the information below. 
Component Prog ID: 1[ODBC][E:\Program Files\SAPDB\ODBC73\sqlod32.dll]
Method Name: IDispenserDriver::CreateResource
Process Name: aspnet_wp.exe
The serious nature of this error has caused the process to terminate.
Exception: C0000005
Address: 0x0E95B9CF
Call Stack: 
sqlod32 + 0x4B9CF
sqlod32 + 0x855F0
+ 0xCD6D31F4

This crash has happened only ONCE in 5 weeks.  But we have only been running
7.3.0.28 ODBC driver since it was released 15 days ago.


My speculation
================
As I've hinted above, I suspect the ODBC client driver has some internal
problems. Threading?  Socket leaks?  We are running 7.3.0.28 now, but we had
the problem before we upgraded (we had 7.3.0.18 before).  The database
server is kernel 7.3.0.25.


Help!
=======
A problem that happens only 10 minutes out of every 4 days is not easy to
track down.  Are there suggestions on what I can do?  I have eliminated
everything but the ODBC driver.

I have already gone so far to put wrappers around all my SELECT / INSERT /
UPDATE / DELETE statements and measure the time.  Anytime a query takes more
than it should, I get alerted via pager.  The last time I was able to get in
while problem was going on, I saw only 5 active sessions and database in
normal state (connect possible, not full, etc.)

Is there any way to study the internal workings of the ODBC driver?  I
haven't messed with any of the connection pooling or other options,
suggestions?  A debug version of the driver?

Thank you.

  Stephen Gutknecht
  currently in Puyallup, Washington USA
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general

Reply via email to