MySQL 崩溃且无法重新启动

MySQL 崩溃且无法重新启动

MySQL 似乎崩溃了,通常是在当天晚些时候,但我不明白为什么!它显示内存不足,但有大量可用内存,并且没有使用交换空间。我正在使用 Azure。

以下是日志:

Oct  3 20:42:20 GenyxLive kernel: [787828.711240] Out of memory: Kill process 53891 (mysqld) score 84 or sacrifice child
Oct  3 20:42:20 GenyxLive kernel: [787828.714081] Killed process 53891 (mysqld) total-vm:871780kB, anon-rss:58164kB, file-rss:0kB
Oct  3 20:42:20 GenyxLive kernel: [787828.731974] init: mysql main process (53891) killed by KILL signal
Oct  3 20:42:20 GenyxLive kernel: [787828.733525] init: mysql main process ended, respawning
Oct  3 20:42:20 GenyxLive kernel: [787828.974636] init: mysql main process (24975) terminated with status 1
Oct  3 20:42:20 GenyxLive kernel: [787828.974666] init: mysql main process ended, respawning
Oct  3 20:42:21 GenyxLive kernel: [787829.937186] init: mysql post-start process (24976) terminated with status 1
Oct  3 20:42:22 GenyxLive kernel: [787830.103158] init: mysql main process (25002) terminated with status 1
Oct  3 20:42:22 GenyxLive kernel: [787830.103194] init: mysql respawning too fast, stopped

以下是正在发生的事情的图表: 图形

您可以看到 CPU 峰值,然后 mysql 服务停止......

有人能帮我弄清楚发生了什么事吗?

Ubuntu 12.04

Azure Small(768mb 内存,1ghz CPU)

编辑

有一个每 5 分钟运行一次的 cron 作业,用于检查新域等(使用 zpanel)。

它是一个 64 位操作系统

Linux GenyxLive 3.2.0-48-virtual #74-Ubuntu SMP Thu Jun 6 20:02:55 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

free -lm结果:

             total       used       free     shared    buffers     cached
Mem:           672        491        180          0         42        118
Low:           672        491        180
High:            0          0          0
-/+ buffers/cache:        330        341
Swap:            0          0          0

cat /proc/meminfo结果:

MemTotal:         688348 kB
MemFree:          186788 kB
Buffers:           43956 kB
Cached:           120988 kB
SwapCached:            0 kB
Active:           335908 kB
Inactive:          84924 kB
Active(anon):     255976 kB
Inactive(anon):      296 kB
Active(file):      79932 kB
Inactive(file):    84628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                16 kB
Writeback:             0 kB
AnonPages:        255924 kB
Mapped:            18568 kB
Shmem:               376 kB
Slab:              51788 kB
SReclaimable:      37052 kB
SUnreclaim:        14736 kB
KernelStack:        1344 kB
PageTables:         7632 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      344172 kB
Committed_AS:     967220 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       13192 kB
VmallocChunk:   34359723128 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       51136 kB
DirectMap2M:      735232 kB

答案1

仅当资源非常紧张时,内核 OOM 才会启动……因此您一定是内存不足,但此时该图表就没有多大意义了。

显示什么free -lm?另外,显示什么cat /proc/meminfo

就问题的触发器而言,此时是否会运行某些维护过程或其他 cron 作业,这些作业可能会执行查询,而 mysql 需要在内存中维护临时表?

顺便问一下... 这是 32 位版本的操作系统吗?我只是想知道你的低内存是否耗尽了。

编辑1 好的。好吧,mysqld 将是消耗内存最多的进程,所以这很可能就是它被选中的原因。检查您的 apache 配置,看看您生成了多少个工作线程……每个线程都会有内存开销,并且当生成更多线程时,您可能会因为没有交换空间而耗尽内存。检查您的 MaxClients 参数……如果您有超过 50 个(只是一个大概的数字),这可能是一个不错的查看位置。我建议您看看Apache 性能调优

相关内容