MySQL服务器发生OOM的案例分析】的更多相关文章

[问题] 有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关 [分析过程] 1.服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G 触发OOM是binlog备份的cp进程 2.mysqld实际使用物理内存远大于innodb_buffer_pool_size设置,与我们之前分析的内存分配管理模块有关,建议更换为jemalloc 可以参考我之前的文章,MySQL5.7.18(ptmalloc VS tcmalloc VS jemalloc)…
[问题] 有台MySQL 5.6.21的数据库实例以写入为主,IO %util接近100% 写入IOPS很高 [分析过程] 1.通过iotop工具可以看到当前IO消耗最高的mysql线程 2.查看线程49342的堆栈,可以看到正在进行redo log的刷新,对应的是9号文件 3.9号文件对应的是redo log的第一个文件 为什么mysql进程会频繁的刷新redo log文件,要结合redolog的刷盘策略来分析,关键是innodb_flush_log_at_trx_commit参数, 默认是1…
[现象] 最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上. 是否过高的context switch引起的%sys消耗呢,做了下面的测试,来验证context switch与CPU %sys之间有没有直接的关系. [测试] 用mysqlslap并发100个线程执行select 1语句,可以看到QPS压到15W context switch已经达到300K左右,但CPU 的%sys在3%左右,并没有导致过高的…
原文:MySQL SYS CPU高的案例分析(一) [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. 下面的截图来源于“MySQL CPU报警”采集的文件 [问题分析] 可以分析出这服务器CPU升高的原因是由于表的高并发写入引起.优化方案通常是通知开发停止写入或降低写入频率. 究竟是什么原因导致高并发写入时CPU sys的占比这么高. 从采集的[Perf Stat]指标看到CPU有大量消耗是集中ke…
原文:MySQL SYS CPU高的案例分析(二) 后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控. [测试现象一] 启用1000个并发线程的压测程序,保持压测程序持续运行,保持innodb_spin_wait_delay默认值不变 在10:17:14秒将innodb_spin_wait_delay值从默认值6调整为18,看到sys从40%降到20% TPS从1.7W增加到2W context switch从82W降到78W [测试现象二]…
转载自:http://www.sohu.com/a/231766385_487483 MySQL 5.7是十年内最为经典的版本,这个观点区区已经表示过很多次.然而,经典也是由不断地迭代所打造的传奇.5.7给我印象最深的莫过于各种OOM,比如线程池.XA事务.information_schema等OOM的各种场景,之前在网易时就遇到了不少. 遇到OOM问题是非常令人头疼的,因为这类问题可能是最难排查的故障,复现需要很长的时间.好在5.7的performance_schema能够各种维度监控MySQ…
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测机制, 导致sql执行失败. 问题的表层根源, 看似简单, 但实际解决之路, 却显得有些曲折坎坷. 因此有必须分析下本质的原因, 以及Java Mysql连接池的处理策略和相关的配置项. 异常现象和问题本源: 服务的持久层依赖mysql, 采用连接池的机制来优化性能. 但服务空闲一段时间(切确地讲是…
前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个"奇怪"排序例子,来谈谈排序一致性问题,并说明产生现象的本质原因. 排序优化与索引使用 为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索…
「推断的前提是以事实为依据.」 这两天碰到一个线上系统的偶尔出现突然堆内存暴涨,这倒不是个什么疑难杂症, 只是过程中有些思路觉得可以借鉴参考,故总结下并写下来. 现象 内存情况可以看看下面这张监控图. 一天偶尔出现几次,持续时间一般几分钟不等. 当这种情况出现时,我们检查错误日志,发现有下面两几种 OOM 错误. java.lang.OutOfMemoryError: GC overhead limit exceeded java.lang.OutOfMemoryError: Java heap…
[现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. 下面的截图来源于“MySQL CPU报警”采集的文件 [问题分析] 可以分析出这服务器CPU升高的原因是由于表的高并发写入引起.优化方案通常是通知开发停止写入或降低写入频率. 究竟是什么原因导致高并发写入时CPU sys的占比这么高. 从采集的[Perf Stat]指标看到CPU有大量消耗是集中kernel的spin_lock上,推测sys的消耗占比…