客户端现象:在使用过程中出现掉线,重新登录可登录上,重新登录上有可能重新掉线需要循环这种操作。服务端/管理端:出现此类现象登录iNode管理后台发现首页无法登录,出现错误信息(无错误详细信息),提示前往服务器使用logfiles.sh生成日志,在服务器生成不出日志。服务器ssh能连接上,查看内存31G,实际使用15G,完全空闲4.7G,CPU使用top命令查看MySQL日常占用100%-400%,CPU为25核心。‘
’版本号为iMC PLAT 7.3(E0705P12)版本。
经过排查MySQL数据库发现多条查询语句Time时间70000+,主要是集中在ead、config_db、dam库上面。通过慢查询日志发现有很多delete语句时间2-6,有部分60+,因之前没有开启慢查询日志所以无法知道之前非常慢70000+的查询是什么语句。
dele语句是删除TBL_DAM_ASSET_PATCH in 嵌套sele查询
有非常多条del语句,几乎占满日志表。
请问这种情况需要怎么处理呢
(0)
dam库 TBL_DAM_ASSET_PATCH 嵌套子查询 DELETE 语句执行效率极差,SQL 执行耗时最高达 70000 秒,持续霸占 MySQL 计算资源,CPU 长期跑满;-- 查看所有执行中线程
show full processlist;
-- 找到Command=Query、Time上万、操作TBL_DAM_ASSET_PATCH的线程ID,执行kill
kill 线程ID;
systemctl stop imc-dam
systemctl disable imc-dam
my.cnf,调整参数后重启 mysqld(业务低谷操作):wait_timeout=300
interactive_timeout=300
max_connections=2000
innodb_lock_wait_timeout=60
use dam;
-- 根据子查询关联条件创建索引,替换为实际关联字段
CREATE INDEX idx_patch_ref ON TBL_DAM_ASSET_PATCH(关联查询字段);
-- 统计表行数,确认数据量级
select count(*) from TBL_DAM_ASSET_PATCH;
-- 原低效嵌套写法(卡死根源)
delete from TBL_DAM_ASSET_PATCH where id in (select id from xxx where xxx);
-- 优化JOIN写法
delete a from TBL_DAM_ASSET_PATCH a inner join xxx b on a.id = b.id where b.条件;
-- 循环每次删除1000条,分批执行
delete a from TBL_DAM_ASSET_PATCH a inner join xxx b on a.id=b.id limit 1000;
my.cnf 添加配置
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=3
log_queries_not_using_indexes=1
optimize table TBL_DAM_ASSET_PATCH;;/iMC/bin/logfiles.sh可正常打包日志,无卡死;(0)
您好,参考
(0)
请教一下,经过几天观察,我发现SQL执行并没有那么慢,可能是在2-5秒左右,还不至于宕机的程度,但是有很多连接时间高达29小时,有可能是这个版本的数据库连接池的问题,请问像这种升级补丁的需要怎么操作呢,是自己可以操作还是需要原厂那边呢,感谢
请教一下,经过几天观察,我发现SQL执行并没有那么慢,可能是在2-5秒左右,还不至于宕机的程度,但是有很多连接时间高达29小时,有可能是这个版本的数据库连接池的问题,请问像这种升级补丁的需要怎么操作呢,是自己可以操作还是需要原厂那边呢,感谢
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明