Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 29 total
Thread Memory loss with EDBSRVR.exe ?
Mon, Jun 23 2008 12:57 PMPermanent Link

peter.moser
On our webserver I can watch edbsrvr.exe eating memory in the Taskmanager.
Since i didnt find a thread in the newsgroups about memory leaks in edbsrvr.exe, I believe that I screwed up.
But where?

It looks like our apps are allocating memory in edbsrvr.exe and are not freeing it.

The setting:
Software:  Delphi 7 - CGI - Webmodules with ElevateDB 1.09 C/S
IIS 6 on Windows Server 2003 R2 Servicepack 1
edbsrvr.exe as service on another Windows Server 2003 R2 Servicepack 1
We are textindexing three CLOB columns - using Roy Lambert's very fine wordgenerator Version 2.

The CGI Applications and queries are ported from DBISAM 4 and worked fine there

The Code in BeforeDispatch:

                 EDBdatenbank.connected:=false;
                 EDBsession.connected:=false;
                 EDBsession.SessionType:=edbcomps.stRemote;
                 EDBsession.LoginUser:=inifile.readstring('EDBRemote','user','');
                 EDBsession.LoginPassword:=inifile.readstring('EDBRemote','passwort','');
                 EDBsession.RemoteAddress:=inifile.readstring('EDBRemote','IP','');
                 EDBsession.RemotePort:=inifile.ReadInteger('EDBremote','port',12005);
                 EDBsession.RemoteCompression:=inifile.ReadInteger('EDBremote','compression',0);
                 EDBdatenbank.database:=inifile.readstring('EDBRemote','datenbank','');


The code in afterDispatch:

     EDBDatenbank.Close;
     EDBDatenbank.connected:=false;
     EDBSession.DropConnections;
     EDBsession.Connected:=false;
     EDBsession.close;
     EDBEngine.Close;


Again: it is not about memory holes in the CGI Application: it is edbsrvr.exe eating memory
What can cause the databaseserver to consume memory and not freeing it?
Help would be urgently appreciated!

Peter
Mon, Jun 23 2008 1:13 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Peter,

<< On our webserver I can watch edbsrvr.exe eating memory in the
Taskmanager. Since i didnt find a thread in the newsgroups about memory
leaks in edbsrvr.exe, I believe that I screwed up.  But where? >>

Are all of the EDB components being used on the webmodule ?

--
Tim Young
Elevate Software
www.elevatesoft.com

Mon, Jun 23 2008 1:35 PMPermanent Link

peter.moser
Tim,
thanks for the fast reply!

EDBDatabase, EDBSession and EDBEngine are as components on the webmodule.
The EDBquery is created at runtime and closed and destroyed after use.

Peter

"Tim Young [Elevate Software]" <timyoung@elevatesoft.com> wrote:

Peter,

<< On our webserver I can watch edbsrvr.exe eating memory in the
Taskmanager. Since i didnt find a thread in the newsgroups about memory
leaks in edbsrvr.exe, I believe that I screwed up.  But where? >>

Are all of the EDB components being used on the webmodule ?

--
Tim Young
Elevate Software
www.elevatesoft.com
Mon, Jun 23 2008 1:39 PMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

peter.moser

>We are textindexing three CLOB columns - using Roy Lambert's very fine wordgenerator Version 2.

Yippee fame at last. I just hope its not my code eating memory.

Roy Lambert
Mon, Jun 23 2008 1:43 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Peter,

<< EDBDatabase, EDBSession and EDBEngine are as components on the webmodule.
The EDBquery is created at runtime and closed and destroyed after use. >>

If you want to send me your code via email, I can check it out and see what
the issue may be.

--
Tim Young
Elevate Software
www.elevatesoft.com

Mon, Jun 23 2008 3:23 PMPermanent Link

peter.moser
Tim,
thanks a lot for the offer,
I will need a couple of hours to extract the important parts to a small program, which I will gladly send to you.
Until then: could the wordgenerator actually - as Roy jokingly mentioned - cause memory losses?

Peter


"Tim Young [Elevate Software]" <timyoung@elevatesoft.com> wrote:

Peter,

<< EDBDatabase, EDBSession and EDBEngine are as components on the webmodule.
The EDBquery is created at runtime and closed and destroyed after use. >>

If you want to send me your code via email, I can check it out and see what
the issue may be.

--
Tim Young
Elevate Software
www.elevatesoft.com
Tue, Jun 24 2008 1:52 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

peter


Its very unlikely unless it a) has a memory loss in it AND b) is getting loaded and unloaded.

Just looking at my code again I do use 3 stringlists. One was inside an if .. end block and wouldn't have been freed if the control file didn't exist.

I've posted revised code to the extensions ng

I can't see how this can give much of a leak since its in the initialization section, but if this is it it (I think) means that the dll is getting loaded and unloaded a lot which means, from my memory of what Tim posted, lots of sessions being created / destroyed.

Roy Lambert
Sat, Jun 28 2008 10:22 AMPermanent Link

peter.moser
Roy,

Thank you very much for the new code (and thank you for the very nice extentions!).
As it turns out the wordgenerator is not the source of memory losses.
I tried the default wodgenerator with the same result: 4 k memory loss per session.

Peter


Roy Lambert <roy.lambert@skynet.co.uk> wrote:

peter


Its very unlikely unless it a) has a memory loss in it AND b) is getting loaded and unloaded.

Just looking at my code again I do use 3 stringlists. One was inside an if .. end block and wouldn't have been freed if the control file didn't exist.

I've posted revised code to the extensions ng

I can't see how this can give much of a leak since its in the initialization section, but if this is it it (I think) means that the dll is getting loaded and unloaded a lot which means, from
my memory of what Tim posted, lots of sessions being created / destroyed.

Roy Lambert
Sat, Jun 28 2008 10:41 AMPermanent Link

peter.moser
Tim,

Please try this:
a) Create a new project in Delphi 7
b) Place a TEDBSession Component on the form
c) Set the Sessiontype property to stRemote
d) Fill out the properties for Remoteadress, username and passwort with the appropriate values.
e) Set the property Sessionname to a valid value
f) set the property "connected" to true and watch the taskmanager: 4k are added to the memory of the edbsrvr.exe task
g) set the property "connected" to false: the memory consumption of edbsrvr.exe stays the same, the 4k are not released.
h) repeating the steps f) and g) increases the memory consumption by 4k for each connection.
4k doesnt sound much but since our CGI Applications open and close sessions for each request - and we have about 25000 Requests per hour - it is a serious problem.

It tried it on different Windows-Servers, with different Delphi 7 installations and also with the commandline server with the same result

Can you reproduce it?  

Peter

"Tim Young [Elevate Software]" <timyoung@elevatesoft.com> wrote:

Peter,

<< EDBDatabase, EDBSession and EDBEngine are as components on the webmodule.
The EDBquery is created at runtime and closed and destroyed after use. >>

If you want to send me your code via email, I can check it out and see what
the issue may be.

--
Tim Young
Elevate Software
www.elevatesoft.com
Sat, Jun 28 2008 12:42 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Peter,

<< I tried the default wodgenerator with the same result: 4 k memory loss
per session. >>

Are you running with the server UI present ?  If so, then turn it off via
this .INI switch:

No User Interface = 1;

in the edbsrvr.ini file here:

C:\Documents and Settings\All Users\Application Data\Elevate
Software\ElevateDB Server

The issue is the list view being used for the interface.  It's not leaking
memory, but Windows does take its good 'ole sweet time reclaiming it.  You
can force it to reclaim the memory by minimizing the server UI, but that
doesn't really help for CGI applications.

I'm going to be separating out the server UI from the server itself shortly,
so this will cease to be an issue.  But, for now the No User Interface
switch does the same thing.

--
Tim Young
Elevate Software
www.elevatesoft.com

Page 1 of 3Next Page »
Jump to Page:  1 2 3
Image