暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
技术分享 _ tcmalloc解决mysqld实例引发的cpu过高问题 - 爱可生开源社区 - OSCHINA - 中文开源技术交流社区.pdf
170
4页
1次
2024-02-22
免费下载
技术分享 | tcmalloc解决mysqld实例引发的cpu过高问题 - 爱
可生开源社区 - OSCHINA
作者简介
任坤,现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工
作。
背景
MySQL 版本:5.6.29,普通主从
OS:CentOS 6.8
最近一段时间线上某实例频繁报警CPU飙高,每次都捕获到同一种 SQL,结构如下:
select uid from test_history where cat_id = '99999' and create_time >= '2019-07-12
19:00:00.000' and uid in (......)
其中uid一次性会传入上百个。
表结构为
Create Table: CREATE TABLE `test_history` (``
id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',``
cat_id` varchar(64) NOT NULL,``
uid` varchar(128) NOT NULL,``
msg` varchar(64) NOT NULL',``
create_time` datetime NOT NULL COMMENT '创建时间',``
PRIMARY KEY (`id`),``
UNIQUE KEY `idx_cat_uid` (`cat_id`,`uid`,`create_time`),``
KEY `idx__time` (`create_time`)``
) ENGINE=InnoDB AUTO_INCREMENT=***** DEFAULT CHARSET=utf8`
SQL 使用到了索引idx_msg_uid_time,单条执行可以秒级完成,但是并发执行会遭遇执行时间过长(超过1个
小时)且CPU过高的问题。
诊断思路
mpstat -P ALL 1,查看cpu使用情况,主要消耗在sys即os系统调用上
perf top,cpu主要消耗在_spin_lock
生成perf report查看详细情况
CPU主要消耗在mutex争用上,说明有锁热点。
采用pt-pmp跟踪mysqld执行情况,热点主要集中在mem_heap_alloc和mem_heap_free上。
of 4
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜