Subject | RE: [firebird-support] Re: Internal gds software consistency check |
---|---|
Author | Miel Hostens |
Post date | 2009-02-11T23:50:34Z |
Just found the answer i guess,
The pooling-option in the connection string had to be set to false! Pooling
made indeed the cache memory to go into an overflow I guess
Thanx for the support!
Miel
Van: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] Namens Adam
Verzonden: woensdag 11 februari 2009 23:23
Aan: firebird-support@yahoogroups.com
Onderwerp: [firebird-support] Re: Internal gds software consistency check
--- In firebird-support@yahoogroups.com
<mailto:firebird-support%40yahoogroups.com> , "mielhostens"
<mielhostens@...> wrote:
here don't have experience sequentially connecting to thousands of
databases using the .NET driver.
Given what you have told us, I still suspect you are running out of
addressable memory; that is 2GB in a single 32 bit process.
Each connected database maintains a page cache. See
DefaultDbCachePages in firebird.conf
This sets the number of "pages" that Firebird will cache for each
connected database (which I believe can also be overridden on a per
database level). The size of each "page" is defined when you create
the database, but usually it is between 4KB and 16KB. So, presuming a
4K page size, and 2048 pages in memory, multiply them together and you
get somewhere around 8MB per database. There are also a whole host of
other factors that increase the memory requirements that I neither
understand nor particularly want to, just pointing out you are
probably in for *at least* 8MB per database.
It doesn't take too much math to figure out that after about 250
simultaneously connected databases, you are going to run over 2GB. Now
you say that you disconnect each database, but in truth, you are doing
something in .NET, and you may need to check in that list (
http://www.firebirdsql.org/index.php?op=lists - Firebird .NET driver )
that what you are doing is *completely* disconnecting from the databases.
The easiest way to confirm on a Windows platform would be to use
Process Explorer (
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ). Find
the fb_server.exe process and watch the handles while your program is
running. Once each database is finished, it should disappear and the
memory should drop back down. If it keeps on rising, that is no doubt
your problem, and you need to ask on the Firebird .NET list how to
completely disconnect.
Adam
[Non-text portions of this message have been removed]
The pooling-option in the connection string had to be set to false! Pooling
made indeed the cache memory to go into an overflow I guess
Thanx for the support!
Miel
Van: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] Namens Adam
Verzonden: woensdag 11 februari 2009 23:23
Aan: firebird-support@yahoogroups.com
Onderwerp: [firebird-support] Re: Internal gds software consistency check
--- In firebird-support@yahoogroups.com
<mailto:firebird-support%40yahoogroups.com> , "mielhostens"
<mielhostens@...> wrote:
>Well understand first that this is not a normal situation. Most people
> Hi there,
>
> I already posted this remark some days ago but response was not big
> so i'll try it again,
>
> Any idea how to solve the problem of getting the error "Internal gds
> software consistency check" when looping via an application through
> firebird datasets and performing only 1 query on each dataset. I
> happens at a random dataset (query works on the specific dataset when
> tried seperatly). Adam already did a suggestion about page buffering
> but how can i solve this?
here don't have experience sequentially connecting to thousands of
databases using the .NET driver.
Given what you have told us, I still suspect you are running out of
addressable memory; that is 2GB in a single 32 bit process.
Each connected database maintains a page cache. See
DefaultDbCachePages in firebird.conf
This sets the number of "pages" that Firebird will cache for each
connected database (which I believe can also be overridden on a per
database level). The size of each "page" is defined when you create
the database, but usually it is between 4KB and 16KB. So, presuming a
4K page size, and 2048 pages in memory, multiply them together and you
get somewhere around 8MB per database. There are also a whole host of
other factors that increase the memory requirements that I neither
understand nor particularly want to, just pointing out you are
probably in for *at least* 8MB per database.
It doesn't take too much math to figure out that after about 250
simultaneously connected databases, you are going to run over 2GB. Now
you say that you disconnect each database, but in truth, you are doing
something in .NET, and you may need to check in that list (
http://www.firebirdsql.org/index.php?op=lists - Firebird .NET driver )
that what you are doing is *completely* disconnecting from the databases.
The easiest way to confirm on a Windows platform would be to use
Process Explorer (
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ). Find
the fb_server.exe process and watch the handles while your program is
running. Once each database is finished, it should disappear and the
memory should drop back down. If it keeps on rising, that is no doubt
your problem, and you need to ask on the Firebird .NET list how to
completely disconnect.
Adam
[Non-text portions of this message have been removed]