As on subject, my client environment is on Windows, running OE10.2B00. They are running a Java web application using JDBC driver provided in OE102B04. Also, may I know what is the default memory limit for a _sqlserv2.exe process? The reason for this inquiries are because their database is encountering errors whereby the _sqlsrv2.exe processes are slowly dying, due to insufficient memory allocation, and I wanted to reproduce this error by limiting the memory usage of _sqlserv2.exe.
The following are the logs:
[DataDirect][OpenEdge JDBC Driver]Software caused connection abort: socket write error
[DataDirect][OpenEdge JDBC Driver]Software caused connection abort: recv failed.
[DataDirect][OpenEdge JDBC Driver][OpenEdge] Insufficient Memory. Memory allocation failed at 210 in Z:/vobs_sql/sql/src/rds/psr_env.cxx. Contact Progress Technical Support
[DataDirect][OpenEdge JDBC Driver][OpenEdge] No SQL schema found in database ( run mkschema ).
BROKER detects death of server xxx.
Disconnecting client xxx of dead server xxx.
Disconnecting dead server xxx.
SYSTEM ERROR: Releasing multiplexed latch. latchId: xxx
dsmTransaction called for invalid user. rtc: -20031.
Disconnected due to shutdown of primary database: c:\abc\demo
These are the relevant PKBs that I have found out:
And of course, the memory leak on the Java web application will be fixed as well.
Generally, a 32bit process on windows has 2 GB address space.
This 2 GB address space will have to contain code, C runtime libraries, dynamically allocated data structures, etc...
In this cases, SQL engine process consumed most/all of the heap memory available and hence you are getting this insufficient memory allocation failure.
It would be good to understand the reasons for the huge consumption of the memory.
Is the memory consumption of SQL engine process continuously increasing?
What is the query that is causing this memory failures?
Thanks for your reply.
Sorry, I should have mentioned that my client is running on OE10.2B00 Enterprise RDBMS (64-bit).
1. It would be good to understand the reasons for the huge consumption of the memory.
> I suspect could be due to a bug in OE SQL server engine. (See OE10.2B05 changelog, Issue #OE00208266.)
2. Is the memory consumption of SQL engine process continuously increasing?
3. What is the query that is causing this memory failures?
> On Jun 17, 2016, at 3:02 AM, Tai Li wrote:
> 1. It would be good to understand the reasons for the huge consumption of the memory.
Along with the various private data structures, code, and shared libraries used by the _sqlsrv2 process there is also the database shared-memory segments that are mapped into the server's address space. Often, these are the largest consumers of address space.
In a 32-bit executable, address space is quite limited as compared to 64-bit executables.
You may be able to successfully perform whatever query is failing due to lack of memory by shrinking the database configuration. Fewer -B, -L, aibufs, bibufs, etc. might shrink the shared memory enough to allow additional dynamic memory allocation by the _sqlsrv2 process to succeed. All depends on how close to the address space limit you are.
Get 10.2B08 installed on the database server sooner rather than later... it has a large number of fixes for the version you are running. Quite a few SQL related fixes and other various performance/stability fixes. Including the bugs you found in those KBs.
Get the table and index statistics updated and verify the queries (and explain plans) aren't completely awful.
Come up with a plan to get on a modern version of OE (11.6.2 was just released). The improvements made between 10.2B and 11.6.2 are too long for me to list here.