[mapguide-trac] #1552: DB_BUSY errors generated under load
MapGuide Open Source
trac_mapguide at osgeo.org
Mon Dec 6 17:49:41 EST 2010
#1552: DB_BUSY errors generated under load
----------------------------+-----------------------------------------------
Reporter: brucedechant | Owner: brucedechant
Type: defect | Status: new
Priority: high | Milestone: 2.3
Component: Server | Version: 2.2.0
Severity: major | Keywords:
External_id: |
----------------------------+-----------------------------------------------
Description changed by brucedechant:
Old description:
> The server can generate DB_BUSY errors under load because the session
> repository used by the server to hold all of the client session
> information encounters too much database contention when multiple clients
> need their session information updated.
>
> The DBXML database used for the session repository does not perform well
> under this condition and ends up locking out other threads from updating
> session information while the updates are done for the thread that has
> the database lock. The locking of the database is required in order to
> perform write operations and this can take longer than the server’s retry
> mechanism allows resulting in DB_BUSY errors being generated for the
> waiting threads.
>
> The solution to address this issue is to remove the bottleneck of all
> session information being funneled through a single session repository.
> By having a session repository per created session the bottleneck is
> removed with the only side effect being an increase in the memory used by
> the server.
>
> To allow for better control over the number of created session
> repositories a new serverconfi.ini property “!SessionRepositoriesLimit”
> should be added to restrict this as needed.
New description:
The server can generate DB_BUSY errors under load because the session
repository used by the server to hold all of the client session
information encounters too much database contention when multiple clients
need their session information updated.
The DBXML database used for the session repository does not perform well
under this condition and ends up locking out other threads from updating
session information while the updates are done for the thread that has the
database lock. The locking of the database is required in order to
perform write operations and this can take longer than the server’s retry
mechanism allows resulting in DB_BUSY errors being generated for the
waiting threads.
The solution to address this issue is to remove the bottleneck of all
session information being funneled through a single session repository. By
having a session repository per created session the bottleneck is removed
with the only side effect being an increase in the memory used by the
server.
To allow for better control over the number of created session
repositories a new serverconfi.ini property “!SessionRepositoriesLimit”
should be added to restrict this as needed.
Also, in order to be more flexible a new serverconfig.ini property
"!SessionRepositoriesConfig" should be added to allow using the old
"!SingleFile" repository or the new "!FilePerSession" solution.
--
--
Ticket URL: <http://trac.osgeo.org/mapguide/ticket/1552#comment:2>
MapGuide Open Source <http://mapguide.osgeo.org/>
MapGuide Open Source Internals
More information about the mapguide-trac
mailing list