OOM全称"Out Of Memory",即内存溢出。大部分情况下,会杀掉导致OOM的进程,然后系统恢复。内存问题的排查思路已MySQL为例,OOM后,mysqld进程被Killed,内存会被释放。但业务场景较多,每个业务配置都不一样,会造成运维成本较高。innodb_buffer_pool在mysql中占有最大内存,将innodb_buffer_pool_size调小可以有效降低OOM问题。但如果设置太小会导致内存刷脏页频率增加,IO增多,从而降低性能。通常我们认为innodb_buffer_pool_size为系统内存的60%~75%最优。另外如果PAGES_MADE_YOUNG远大于PAGES_NOT_MADE_YOUNG页数,那么此时内存使用就可能比较大,可以适当降低innodb_buffer_pool_size大小。需要注意的是一些参数不支持动态修改,只能先修改配置文件然后重启mysql才能生效,所以在mysql启动之前,一定要把参数值确认好。通过以上两个值来判断 table_open_cache 是否到达瓶颈。

MySQL OOM(内存溢出)的解决思路

MySQL OOM(内存溢出)的解决思路

MySQL OOM(内存溢出)的解决思路

MySQL OOM(内存溢出)的解决思路

MySQL OOM(内存溢出)的解决思路

MySQL OOM(内存溢出)的解决思路