[#9173] Deadlocks in mysql SessionHandler under heavy loads
Summary Deadlocks in mysql SessionHandler under heavy loads
Queue Horde Groupware Webmail Edition
Queue Version 1.2.6
Type Enhancement
State Assigned
Priority 1. Low
Owners Chuck Hagenbuch <chuck (at) horde (dot) org>
Requester luc (dot) germain (at) usherbrooke (dot) ca
Created 08/11/2010 (1019 days ago)
Due
Updated 05/12/2011 (745 days ago)
Assigned 08/13/2010 (1017 days ago)
Resolved
Attachments sessionhandler.patch Download
Milestone
Patch Yes

History
08/13/2010 01:04:37 PM Jan Schneider Comment #2
State ⇒ Assigned
Assigned to Chuck Hagenbuch
Reply to this comment
Transaction isolation is over my head.
08/11/2010 08:05:45 PM luc (dot) germain (at) usherbrooke (dot) ca Comment #1
State ⇒ New
New Attachment: sessionhandler.patch Download
Patch ⇒ Yes
Milestone ⇒
Queue ⇒ Horde Groupware Webmail Edition
Summary ⇒ Deadlocks in mysql SessionHandler under heavy loads
Type ⇒ Enhancement
Priority ⇒ 1. Low
Reply to this comment
We use the mysql Sessionhandler of Horde on our installation, and 
under heavy loads (> 500 users), we start having a lot of deadlocks 
messages in the logs:

Aug 05 09:45:47 HORDE [error] [horde] Error writing session data: 
Deadlock found when trying to get lock; try restarting transaction 
[pid 27607 on line 185 of 
"/htdocs/horde/lib/Horde/SessionHandler/mysql.php"]

When this happens, users have to try to login many times before 
getting access.

We added the following statement to the mysql driver and it solved the 
problem nicely:

mysql_query('SET TRANSACTION ISOLATION LEVEL READ COMMITTED;', $this->_db);

ref: http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html

No more deadlock seen even for > 2000 active users