Mysql::Error: Lock wait timeout exceeded;

Hi,

My application throws some “Mysql::Error: Lock wait timeout” from time
to time. I think it coincides with the upgrade of Rails to version 2.0.2
.

The exact error is this:

Mysql::Error: Lock wait timeout exceeded; try restarting transaction:
INSERT INTO sessions (updated_at, session_id, data)
VALUES(‘2008-01-20 06:31:40’, ‘34264f71fed074a320ed77dda7a86bda’,
‘BAh7CDoKdG9waWMiEdCS0YHQuNGH0LrQuDoPc3Zlam9fdHlwZSIKZnJlc2gi\nCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7\nAAY6CkB1c2VkewA=\n’)
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:150:in
`log’

The sessions table has been generated by rake.

Can anyone give me a clue what could be locking the table.

10x in advance

How many hits / second are you servicing ? How much load is your db
under ? How well tuned is your db, etc. The lock timeout is most
likely caused by other rails processes contenting for the write lock
on that table, probably inside a transaction.

mysql> show innodb status\G

will show you details about the last deadlock or lock timeout, this
will give you a clue as to the other writers to this table.

mysql> show table status like ‘sessions’;

will tell you the details about the sessions table, if it isn’t innodb
then you can only have a single writer to the table, and under heavy
load this will be a problem.

Cheers

Dave

On Jan 21, 8:11 pm, Stanislav B. <ruby-forum-incom…@andreas-

Howdy. Take a look at this article:


– Tom M., CTO
– Engine Y., Ruby on Rails Hosting
– Support, Scalability, Reliability
– (866) 518-YARD (9273) x201

On Jan 21, 4:11 am, Stanislav B. <ruby-forum-incom…@andreas-