Subject Re: [firebird-support] unable to allocate memory from operating system
Author Thomas Steinmaurer
Hi John,

> Our main database is Firebird 2.1 running on a windows 2k8 server
> In the middle of the night with no real users, a single program was running updating data from a file into the database. This runs every night, there were no changes to the programs and automatic server updates are turned off. Part way through the program failed and then repeatedly gave the following errors each time it tried to write to the database.
> Exception class = TDBXError; message = invalid request handle
> Exception class = TDBXError; message = unable to allocate memory from operating system

TDBXError is an exception from the dbExpress layer, so I guess you are
using dbExpress? ;-)

Memory usage/exhausting are influenced from quite a few parameters.
The following are out of my mind:

* Client-side: Using buffered/non-buffered result set in your access
* Firebird page cache: RAM to be used for caching data pages. This is
defined by the database page size, page buffers and your Firebird server
* Firebird sort cache: RAM to be used for intermediate results while
sorting/grouping data before going to disk. E.g. per default with
Classic or SuperClassic this is 8 MB per connection
* Firebird lock manager size: RAM to be used for the lock manager. Can
defined in firebird.conf and inspected via fb_lock_print
* Windows 2008 Server, if it isn't the R2 release, AFAIK has a bug,
which can lead to the Windows file system cache exhausting the available RAM

With regards,
Thomas Steinmaurer (^TS^)
Firebird Technology Evangelist

Do you care about the future of Firebird? Join the Firebird Foundation: