Subject High Memory consumption for classic server under Firebird 2.1.3
Author Andreas Rulle

We are migrating a catalog management platform from Firebird 1.0.3 to Firebird 2.1.3 Classic Server. Each of the about 600 assortments has its own set of firebird databases. They are copied to one of the service units and then processed (via JayBird).

Our application imports for example about 5000 positions of a product catalog via insert or update statements into an existing catalog. For consistency checks there are many select statements during this import.

We have autocommit = off and this is one operation in Job of 12 operations and after the last operation the transactions on the database files are committed or rollbacked.

In the first operation the firebird-process consumes about 1 GByte RAM.

In a second operation this processing is repeated for another database file and the other firebird-process consumes another 1 GByte RAM.

And then the 32-bit Windows-Box together with the application becomes inoperable since the reserved memory is not released.

On a Centos 5.5 Box the process fb_inet_server has a VmRss of 2,1 GByte for the same process - with a default firebird.conf.

Under Firebird 1.0.3 we have not seen this problem unter Linux or Windows
for over 6 years!

What we have done so far:

* Changed the page buffer via gfix, so that gstat reports Page buffers 0
* Tested a 2.1.4 - snapshot for the classic and superserver (under Windows)
* for 2.1.4 set the MaxFileSystemCache=6000
* Tested with 2.5 RC 2 Classic-Server under Windows with default firebird.conf

In each of the tests the firebird process (classic or super server) rapidly increases the memory, observed by the task manager.


How can we effectively limit the memory consumption of each of the classic server processes with Firebird 2.1.3 without affecting the proven application logic?

Why do the firebird processes consume so much memory unter Firebird 2.1.3?