一个游戏业务的MySQL数据库,多台服务器上mysql服务被OOM,但OOM的原因是什么呢?其实导致OOM的直接原因并不复杂,就是因为服务器内存不足,内核需要回收内存,回收内存就是kill掉服务器上使用内存最多的程序,而mysql服务是使用内存最多,所以就OOM了。
首先我们检查是什么原因导致内存不足,这台服务器物理内存为64G
# free -m
total used free shared buffers cached
Mem: 64375 57821 6553 0 554 16369
-/+ buffers/cache: 40897 23478
Swap: 16383 5 16378
被oom第一个怀疑的原因就是innodb_buffer_pool_size大小设置是否合理
141205 18:47:57 [Note] Plugin 'FEDERATED' is disabled.
141205 18:47:57 InnoDB: The InnoDB memory heap is disabled
141205 18:47:57 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141205 18:47:57 InnoDB: Compressed tables use zlib 1.2.3
141205 18:47:57 InnoDB: Using Linux native AIO
141205 18:47:57 InnoDB: Initializing buffer pool, siz