Page 1 of 2

Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 1:34 pm
by droegec
Hello,


We have a server running a Jade application and the problem being experienced is that the drive where the transaction and message logs are stored keeps filling up to capacity with a .tmp file. The filename is in the format tdb_[servername]_00f8c[187.8].tmp and from all the reading I've done over the last day I realise this is not the format for a journal log or message log file. It is currently at 46GB, it will continue to grow until the drive is full and we have to delete it.

I would have thought that the location for this file to be created would be specified in the jade.ini file as it is not a default path, and also the filename format as well, but I cannot seem to locate entries in the jade.ini for these parameters. That said, I know very little about Jade and this file may be related to the Jadelog or journallog entries in the INI. Can anyone shed any light on this? I am sure it is just a configuration issue. Any help would be greatly appreciated.


Regards

Carl

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 1:44 pm
by allistar
From what I'm aware this is where overflowed transient instances are kept. Is it possible that your application(s) are leaking transients?

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 1:47 pm
by BeeJay
Files with a name formatted tdb_[servername]_00f8c[187.8].tmp are used when you have overflowed your transient cache and some transient objects need to be moved out of cache to make room for some new objects. (tdb = transient database)

The fact that your transient database is up to 46gig is suggestive that your Jade system has some serious transient object leaks that need to be urgently addressed by the developers of your system. It may also be the case that you don't have the space reuse option set which would also exacerbate the issue with transient object leaks.

The location of the tdb files can be specified using the TransientDbPath setting in your ini file, although getting your developers to address the transient leak is still important.

Cheers,
BeeJay.

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 2:15 pm
by droegec
Thankyou both for your responses.

Sounds like there is a problem with the application as the vendor claims not to know why those large tmp files are being created. Surely if they have some Jade developers working for them they would have known immediately what the problem was, they probably just don't want to fix their software.


Regards

Carl

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 2:26 pm
by torrie
if you have CardSchema (http://www.jade.co.nz/jadecare/download.htm), you can specify it to check for transients on shutdown. In the ini file, check the following setting

[CardLog]
CheckTransientsOnShutDown=true

This will log the transients into the cn_log logs in your system's log directory.

If you don't have card schema, then you can check for transients with the following code (Note, this will need to run inside your application to show the transients in that application. If you run it as a JadeScript/Workspace you will only see the transients created inside your Jade script / Workspace.)

Code: Select all

vars coll : ObjectArray; o : Object; count : Integer; bHeaderPrinted : Boolean; begin create coll transient; currentSchema.getClass(Object.name).allProcessTransientInstances(coll, 0, true); // Remove the known transients coll.removeWithCheck( coll ); // Jade System transients coll.removeWithCheck( app ); coll.removeWithCheck( app.printer ); coll.removeWithCheck( app.currentLocale ); coll.removeWithCheck( app.currentLocaleInfo ); coll.removeWithCheck( app.currentLocaleInfo.currencyInfo ); coll.removeWithCheck( app.currentLocaleInfo.dateInfo ); coll.removeWithCheck( app.currentLocaleInfo.timeInfo ); coll.removeWithCheck( app.currentLocaleInfo.numericInfo ); coll.removeWithCheck( process.profiler ); foreach o in coll where not o.isKindOf( ApplicationContext ) and not o.isKindOf( ObjMethodCallDesc ) do if not bHeaderPrinted then write 'Transients:'; write '==========================================================================='; bHeaderPrinted := true; endif; write "Transient Not Deleted " & getClassForObject( obj).name & Tab & getObjectStringForObject( obj ); count := count + 1; endforeach; delete coll; if bHeaderPrinted then write "Total Transients Found: " & count.String; endif; end;

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 3:39 pm
by droegec
Looks like we have CardSchema but the CheckTransientsOnShutDown is set to 'false'.

Will pass your suggestion along. Thankyou very much.


Cheers

Carl

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 5:10 pm
by Matthew
Whilst a transient leak is the most common cause for unbounded growth of the transient database file, you should also check the configuration in your ini file. This is as it is also possible that your ini file is configured to allow the transient file to grow continuously. This will occur if you set the SpaceReuseOption to false in the TransientDb section of your ini file. Except in very specialist cases, for the TransientDb this should be set to true to prevent unbounded growth. e.g the "correct" setting is

[TransientDb]
SpaceReuseOption=true

Re: Massive TMP files filling up storage

Posted: Tue Sep 21, 2010 8:00 pm
by Dr Danyo
If you are using JADE 6.3 you can use the monitor to analysis the content of the transient overflow file (the tmp file), just select your process from the "Users" option in the Navigator window, right click and select "Transient Database File Analysis".

ps You might be pushing your luck analysising a 46GB file, you may be better off setting the SpaceReuseOption first and then using the Analysis option on a smaller file.

regards,
Dr Danyo.

Re: Massive TMP files filling up storage

Posted: Wed Sep 22, 2010 2:32 pm
by droegec
The config of the INI looks OK with SpaceReuseOption=true, so it sounds as if it is indeed a transient leak.

Yes I believe it is Jade 6.3, analysis of the transient DB will be something for the vendor sort out.

BTW the file is now 48.5GB since my last post. :D

Re: Massive TMP files filling up storage

Posted: Wed Sep 22, 2010 2:52 pm
by 0.0
The transient file belongs to the process having pid 00f8c (=3980 dec)
Until the cause of the file growth is determined, in the event that the size of the file becomes an issue, the file can be removed by closing the owning process. This should be done through the application or application service management as opposed to hard closing it (via Windows process manager or other such mechanism)
Until the root cause is addressed it would be advisable to monitor the directory containing the file and close the application to release the file when necessary (at a time that would cause minimum disruption to users).