Subject | Re: [firebird-support] Re: Firebird Restarting part 2 |
---|---|
Author | Vlad Horsun |
Post date | 2006-12-22T12:00:03Z |
Well, you have default values for sorting and page cache.
I wonder why do you use small cache for 8GB database on machine
with a lot of memory, but this is not about subject ;)
to, say, 100000 then Firebird will reserve 100000 * page_size (usually 4KB)
bytes of memory for every attached database. If database is small, say, 1000
pages, then 99000 * page_size bytes of reserved memory will be never used.
Imagine server with such crazy settings served 10 databases :)
you have something like statement cache in your application ? Are you sure you
close all statement handles ? How many statements can be allocated in all
instances of your application simultaneously ?
Every statement have it's own memory pool at least 64KB
Regards,
Vlad
I wonder why do you use small cache for 8GB database on machine
with a lot of memory, but this is not about subject ;)
> > I can think about 3 possible ways to Firebird to reserve bigIt seems this is not a problem for you. If you change DefaultDbCachePages
> amount of virtual memory and not use it:
> >
> > a) Large unused page cache
> >
> > Firebird reserved virtual memory of size of page buffer setting
> (in database header or in firebird.conf)
> > when first attachment to database is made. But Firebird can't use
> more pages than database file
> > have - so it reserved one amount of memory and used another if page
> buffer is greater than database
> > file itself
>
> Hmm - I didn't really understand all of it to the full.
> But is there a way to change some settings in order to have do it
> diffrent ?
to, say, 100000 then Firebird will reserve 100000 * page_size (usually 4KB)
bytes of memory for every attached database. If database is small, say, 1000
pages, then 99000 * page_size bytes of reserved memory will be never used.
Imagine server with such crazy settings served 10 databases :)
> > b) many simultaneous sortingsIf you can catch query consuming much memory it will be good hint
> >
> > Firebird reserved memory for sorting by SortMemBlockSize chunks
> (no more than SortMemUpperLimit)
> > of course it can use less memory then SortMemBlockSize
>
> They do a lot of sorting.
> Especially some of the rutines during the day creates 3 - 4 reports
> that selects some 500 - 2000 records from a table containing some 8
> mill. records.
> I have looked at the sql, and it does use an index to retrieve the
> records. And the index has just recently had a set statistics (besides
> - There are only insert and updates (updates are not in index fields)
> in this table. No delete).
>
> The last few days I have monitored the memory use, and tried to see
> what people where doing at the time when memory cunsumption suddenly
> increased. If what I suspect is rigth it seems as if the memory
> increases when creating some reports (which users often do at the same
> time). But I'm not certain yet....
> Can I in some way tweak these as well ?Sorting is also must not be a your problem as you not raised SortMemUpperLimit
> > c) some memory leakI recollected one more possible case when memory allocated but not used - are
> >
> > It is possible you faced with some memory leak in Firebird but
> much more probably in some UDF.
> > But i can't imagine memory leak when physical memory is unused...
>
> We don't use any UDF.
you have something like statement cache in your application ? Are you sure you
close all statement handles ? How many statements can be allocated in all
instances of your application simultaneously ?
Every statement have it's own memory pool at least 64KB
Regards,
Vlad