Subject | Re: Firebird stops accepting connections after heavy load for 2-10 hours |
---|---|
Author | Stan |
Post date | 2006-06-28T16:35:24Z |
This problem was solved on linux by turning off automatic
sweep (set sweep to 0) and running a "gfix sweep" every
5 minutes.
On windows we are still getting:
deadlock
internal gds software consistency check (error during savepoint
backout (290))
randomly under load even using the same manual sweep method.
any ideas for this issue?
sweep (set sweep to 0) and running a "gfix sweep" every
5 minutes.
On windows we are still getting:
deadlock
internal gds software consistency check (error during savepoint
backout (290))
randomly under load even using the same manual sweep method.
any ideas for this issue?
--- In firebird-support@yahoogroups.com, "Stan" <shizius@...> wrote:
>
> I have arrived at these parameters after much testing,
> Some of my requests are meant to deadlock, in which case
> my application decides what to do about it (rollbalck and retry or
> just rollback)
>
> On windows, I got better performance using
> IBASE_COMMITTED|IBASE_REC_NO_VERSION
> instead of IBASE_CONCURRENCY.
>
> I will try IBASE_CONCURRENCT on linux.
>
> I am currently trying FB2.0 RC1 to see if the newer
> garbage-collection policy has an affect on my issue.
>
> thanks,
>
> stan
>
> --- In firebird-support@yahoogroups.com, "Ann W. Harrison"
> <aharrison@> wrote:
> >
> > Stan wrote:
> > >
> > > Read transactions are opened:
> > > ibase_trans(IBASE_READ|IBASE_CONCURRENCY|IBASE_NOWAIT,$dbh);
> >
> > Why no wait? It doesn't make much difference since read
> > transactions don't wait anyway. Generally, no wait is a
> > way to get more deadlocks.
> > >
> > > Write transactions are pened:
> > >
>
ibase_trans(IBASE_WRITE|IBASE_COMMITTED|IBASE_REC_NO_VERSION|IBASE_NOWAIT,
> > > $dbh);
> > >
> > I would recommend using IBASE_CONCURRENCY, particularly for write
> > transactions in order to get a consistent view of data and avoid
> > accidentally contaminating one transaction with part of the work
> > of another. How can that happen. Suppose you've got a table of
> > deposits and a table of withdrawals. Transaction one creates a
> > withdrawal in one table and a corresponding deposit in another,
> > then commits. Transaction two reads the withdrawal table before
> > transaction one changes it, so does not see the withdrawal. But
> > before transaction two can read the deposit table, transaction
> > one makes its changes and commits, so transaction two sees half
> > of the actions of transaction one. That is a bad thing.
> >
> > As far as I know, the purpose of NO_REC_VERSION is to cause
> > deadlock like errors where none are required, I wouldn't use
> > that either.
> >
> > Regards,
> >
> >
> > Ann
> >
>