Description:
Since about 3 weeks, our production database server crashes twice every night. It's possible to restart running jobs next day, but i don't know whats getting corrupted due to mysql daemon crash...
-- first message in error log: --
Mar 2 21:33:10 sdm-core mysqld[4434]: InnoDB: Warning: a long semaphore wait:
Mar 2 21:33:10 sdm-core mysqld[4434]: --Thread 456428464 has waited at ../include/btr0btr.ic line 28 for 241.00 seconds the semaphore:
Mar 2 21:33:10 sdm-core mysqld[4434]: X-lock on RW-latch at 0x2fc57ee4 created in file buf0buf.c line 497
Mar 2 21:33:10 sdm-core mysqld[4434]: a writer (thread id 456428464) has reserved it in mode wait exclusive
Mar 2 21:33:10 sdm-core mysqld[4434]: number of readers 1, waiters flag 1
Mar 2 21:33:10 sdm-core mysqld[4434]: Last time read locked in file btr0sea.c line 765
Mar 2 21:33:10 sdm-core mysqld[4434]: Last time write locked in file btr0pcur.c line 247
Mar 2 21:33:10 sdm-core mysqld[4434]: InnoDB: ###### Starts InnoDB Monitor for 30 secs to print diagnostic info:
Mar 2 21:33:10 sdm-core mysqld[4434]: InnoDB: Pending preads 0, pwrites 1
-- after many times, mysql prints InnoDB Monitor output to syslog, mysql crashes with following messages: --
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: ###### Diagnostic info printed to the standard error stream
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: Error: semaphore wait has lasted > 600 seconds
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: We intentionally crash the server, because it appears to be hung.
Mar 2 21:42:44 sdm-core mysqld[4434]: 070302 21:42:44InnoDB: Assertion failure in thread 501685168 in file srv0srv.c line 2093
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: We intentionally generate a memory trap.
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: If you get repeated assertion failures or crashes, even
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: immediately after the mysqld startup, there may be
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: corruption in the InnoDB tablespace. Please refer to
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
Mar 2 21:42:44 sdm-core mysqld[4434]: InnoDB: about forcing recovery.
Mar 2 21:42:44 sdm-core mysqld[4434]: mysqld got signal 11;
Mar 2 21:42:44 sdm-core mysqld[4434]: This could be because you hit a bug. It is also possible that this binary
Mar 2 21:42:44 sdm-core mysqld[4434]: or one of the libraries it was linked against is corrupt, improperly built,
Mar 2 21:42:44 sdm-core mysqld[4434]: or misconfigured. This error can also be caused by malfunctioning hardware.
Mar 2 21:42:44 sdm-core mysqld[4434]: We will try our best to scrape up some info that will hopefully help diagnose
Mar 2 21:42:44 sdm-core mysqld[4434]: the problem, but since we have already crashed, something is definitely wrong
Mar 2 21:42:44 sdm-core mysqld[4434]: and this may fail.
Mar 2 21:42:44 sdm-core mysqld[4434]:
Mar 2 21:42:44 sdm-core mysqld[4434]: key_buffer_size=1073741824
Mar 2 21:42:44 sdm-core mysqld[4434]: read_buffer_size=131072
Mar 2 21:42:44 sdm-core mysqld[4434]: max_used_connections=769
Mar 2 21:42:44 sdm-core mysqld[4434]: max_connections=1000
Mar 2 21:42:44 sdm-core mysqld[4434]: threads_connected=769
Mar 2 21:42:44 sdm-core mysqld[4434]: It is possible that mysqld could use up to
Mar 2 21:42:44 sdm-core mysqld[4434]: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 3224568 K
Mar 2 21:42:44 sdm-core mysqld[4434]: bytes of memory
Mar 2 21:42:44 sdm-core mysqld[4434]: Hope that's ok; if not, decrease some variables in the equation.
Mar 2 21:42:44 sdm-core mysqld[4434]:
Mar 2 21:42:44 sdm-core mysqld[4434]: You seem to be running 32-bit Linux and have 769 concurrent connections.
Mar 2 21:42:44 sdm-core mysqld[4434]: If you have not changed STACK_SIZE in LinuxThreads and built the binary
Mar 2 21:42:44 sdm-core mysqld[4434]: yourself, LinuxThreads is quite likely to steal a part of the global heap for
Mar 2 21:42:44 sdm-core mysqld[4434]: the thread stack. Please read http://www.mysql.com/doc/en/Linux.html
Mar 2 21:42:44 sdm-core mysqld[4434]:
Mar 2 21:42:44 sdm-core mysqld[4434]: thd=(nil)
Mar 2 21:42:44 sdm-core mysqld[4434]: Attempting backtrace. You can use the following information to find out
Mar 2 21:42:44 sdm-core mysqld[4434]: where mysqld died. If you see no messages after this, something went
Mar 2 21:42:44 sdm-core mysqld[4434]: terribly wrong...
Mar 2 21:42:44 sdm-core mysqld[4434]: Cannot determine thread, fp=0x1de71788, backtrace may not be correct.
Mar 2 21:42:44 sdm-core mysqld[4434]: Stack range sanity check OK, backtrace follows:
Mar 2 21:42:44 sdm-core mysqld[4434]: 0x81c1565
Mar 2 21:42:44 sdm-core mysqld[4434]: 0x82f0db3
Mar 2 21:42:44 sdm-core mysqld[4434]: 0xb7fa1b63
Mar 2 21:42:44 sdm-core mysqld[4434]: 0xb7e1918a
Mar 2 21:42:44 sdm-core mysqld[4434]: New value of fp=(nil) failed sanity check, terminating stack trace!
Mar 2 21:42:44 sdm-core mysqld[4434]: Please read http://dev.mysql.com/doc/mysql/en/using-stack-trace.html and follow instructions on how to resolve the stack trace. Resolved
Mar 2 21:42:44 sdm-core mysqld[4434]: stack trace is much more helpful in diagnosing the problem, so please do
Mar 2 21:42:44 sdm-core mysqld[4434]: resolve it
Mar 2 21:42:44 sdm-core mysqld[4434]: The manual page at http://www.mysql.com/doc/en/Crashing.html contains
Mar 2 21:42:44 sdm-core mysqld[4434]: information that should help you find out what is causing the crash.
-- then it gets restarted by mysqld_safe and starts crash recovery: --
Mar 2 21:43:45 sdm-core mysqld[6485]: 070302 21:43:45 InnoDB: Database was not shut down normally!
Mar 2 21:43:45 sdm-core mysqld[6485]: InnoDB: Starting crash recovery.
Mar 2 21:43:45 sdm-core mysqld[6485]: InnoDB: Reading tablespace information from the .ibd files...
Mar 2 21:43:45 sdm-core mysqld[6485]: InnoDB: Restoring possible half-written data pages from the doublewrite
Mar 2 21:43:45 sdm-core mysqld[6485]: InnoDB: buffer...
Mar 2 21:43:46 sdm-core mysqld[6485]: 070302 21:43:46 InnoDB: Starting log scan based on checkpoint at
Mar 2 21:43:46 sdm-core mysqld[6485]: InnoDB: log sequence number 298 3056455081.
Mar 2 21:43:46 sdm-core mysqld[6485]: InnoDB: Doing recovery: scanned up to log sequence number 298 3056672351
Mar 2 21:43:46 sdm-core mysqld[6485]: 070302 21:43:46 InnoDB: Starting an apply batch of log records to the database...
Mar 2 21:43:47 sdm-core mysqld[6485]: InnoDB: Progress in percents: 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Mar 2 21:43:47 sdm-core mysqld[6485]: InnoDB: Apply batch completed
Mar 2 21:43:47 sdm-core mysqld[6485]: 070302 21:43:47 InnoDB: Started; log sequence number 298 3056672351
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 950109184 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 712581120 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 534435840 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 400825344 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 300616704 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 225460224 bytes)
Mar 2 21:43:47 sdm-core mysqld[6485]: ^G/usr/sbin/mysqld: Out of memory (Needed 169095168 bytes)
Mar 2 21:43:48 sdm-core mysqld[6485]: 070302 21:43:48 [Note] /usr/sbin/mysqld: ready for connections.
--
I don't know, if mysqld reported "Out of memory" before we had this problem, but system has 7G of memory. 2715932k free + 1371416k cached after mysql is started up and running.
How to repeat:
Easily repeatable on my system, since it crashes every night. Unfortunately i don't have an idea which exact statements cause the crash, because all statements running are executed thousand times all over the day.