GreatSQL temp文件占用时长分析
GreatSQL temp文件占用时长分析
GreatSQL DBA在日常工作中可能会遇到这种情况,存在一个 InnoDB 引擎下的 temp_x.ibt 文件很大,但是却无法确定这个文件是什么时间由哪个连接建立的,难以支撑后续定位问题,今天这篇文章彻底讲明白这个问题。
现象:发现一个实例下面(4406端口对外提供服务的实例)temp文件很大,如下所示:
-rw-r----- 1 greatsql greatsql 81920 Sep 26 23:56 temp_1.ibt -rw-r----- 1 greatsql greatsql 81920 Sep 30 16:43 temp_10.ibt -rw-r----- 1 greatsql greatsql 81920 Sep 26 23:56 temp_2.ibt -rw-r----- 1 greatsql greatsql 81920 Sep 26 23:56 temp_3.ibt -rw-r----- 1 greatsql greatsql 81920 Sep 26 23:56 temp_4.ibt -rw-r----- 1 greatsql greatsql 18392023040 Oct 9 15:56 temp_5.ibt -rw-r----- 1 greatsql greatsql 18417188864 Oct 11 14:51 temp_6.ibt -rw-r----- 1 greatsql greatsql 18417188864 Oct 11 14:51 temp_7.ibt -rw-r----- 1 greatsql greatsql 18392023040 Oct 9 15:54 temp_8.ibt -rw-r----- 1 greatsql greatsql 81920 Sep 30 16:43 temp_9.ibt $ cd /data/greatsql/dbdata/datanode4406/data/#innodb_temp $ du -sm temp_6.ibt 17565 temp_6.ibt
单个文件大小达到17G,而且还在持续增加。
那么,这个文件是由那个连接占用的呢?
$ ps -ef|grep greatsql|grep 4406 greatsql 35049 33132 88 Sep26 ? 15-18:21:22 /data/greatsql/svr/greatsql/bin/greatsqld --defaults-file=/greatsql/conf/datanode4406.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/datanode4406/data --plugin-dir=/greatsql/svr/greatsql/lib/plugin --log-error=/greatsql/logs/error4406.log --pid-file=/greatsql/dbdata/datanode4406/data/greatsql.pid --socket=/greatsql/dbdata/datanode4406/data/greatsql.sock --port=4406
通过上述命令可以得到GreatSQL的进程ID。
GreatSQL数据库的进程为35049接下来通过命令查看这个进程打开的这个连接的文件名,lsof -p pid|grep port
或者lsof 目录名称
,可以得到这个进程在在这个端口上的连接的文件编号:
$ lsof /data/greatsql/dbdata/datanode4406/data/#innodb_temp/temp_6.ibt COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME greatsqld 35049 greatsql 282uW REG 8,17 18417188864 16642999840 /data/greatsql/dbdata/datanode4406/data/#innodb_temp/temp_6.ibt
/proc/[pid]/fd 是一个目录,包含进程打开文件的情况,大家注意到 282uW 这个值,其中数字部分代表fdid,这个里面282就是代表fdid,然后执行下面的命令:
$ ll /proc/35049/fd/282 lrwx------ 1 greatsql greatsql 64 Sep 26 23:57 /proc/35049/fd/282 -> /data/greatsql/dbdata/datanode4406/data/#innodb_temp/temp_6.ibt
这样就得到连接建立这个文件的时间了,通过这个方法判断是否为长期不释放的连接,然后通过数据库的information_schema.innodb_session_temp_tablespaces
,找到连接会话ID
,它与information_schema.processlist
的ID
是一一对应关系,从而进行下一步研判和深度分析处理,异常的长连接可以kill处理,如下图 KILL 907
即可。
greatsql> SELECT * FROM information_schema.innodb_session_temp_tablespaces ; +---------+------------+----------------------------+-------------+----------+-----------+ | ID | SPACE | PATH | SIZE | STATE | PURPOSE | +---------+------------+----------------------------+-------------+----------+-----------+ | 29356 | 4243767288 | ./#innodb_temp/temp_8.ibt | 18392023040 | ACTIVE | INTRINSIC | | 473 | 4243767285 | ./#innodb_temp/temp_5.ibt | 18392023040 | ACTIVE | INTRINSIC | | 907 | 4243767286 | ./#innodb_temp/temp_6.ibt | 18417188864 | ACTIVE | INTRINSIC | | 501 | 4243767287 | ./#innodb_temp/temp_7.ibt | 18417188864 | ACTIVE | INTRINSIC | | 1798928 | 4243767284 | ./#innodb_temp/temp_4.ibt | 245760 | ACTIVE | INTRINSIC | | 0 | 4243767281 | ./#innodb_temp/temp_1.ibt | 81920 | INACTIVE | NONE | | 0 | 4243767282 | ./#innodb_temp/temp_2.ibt | 81920 | INACTIVE | NONE | | 0 | 4243767290 | ./#innodb_temp/temp_10.ibt | 81920 | INACTIVE | NONE | | 0 | 4243767289 | ./#innodb_temp/temp_9.ibt | 81920 | INACTIVE | NONE | | 0 | 4243767283 | ./#innodb_temp/temp_3.ibt | 81920 | INACTIVE | NONE | +---------+------------+----------------------------+-------------+----------+-----------+ 10 rows in set (0.00 sec) greatsql> KILL 907 Query OK, 0 rows affected (0.00 sec)
感谢大家观看,不足之处还请指正。
Enjoy GreatSQL :)
关于 GreatSQL
GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。
相关链接: GreatSQL社区 Gitee GitHub Bilibili
GreatSQL社区:
社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html
社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html
(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)
技术交流群:
微信&QQ群:
QQ群:533341697
微信群:添加GreatSQL社区助手(微信号:wanlidbc
)好友,待社区助手拉您进群。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
面向教育场景的大模型 RAG 检索增强解决方案
概述 在现代信息检索领域,检索增强生成(Retrieval-Augmented Generation, RAG)模型结合了信息检索与生成式人工智能的优点,从而在特定场景下提供更为精准和相关的答案。在特定场景下,例如教育等领域,用户通常需要精确且相关的信息来支持决策。传统生成模型虽然在自然语言理解和生成方面表现良好,但在专业知识的准确性上可能有所不足。RAG模型通过将检索与生成相结合,能有效提升回答的准确性和上下文相关性。本方案为您介绍,如何使用人工智能平台 PAI 构建面向教育场景的大模型 RAG 检索增强解决方案。 1.使用PAI-Designer构建知识库 您可以参照数据格式要求准备,使用PAI-Designer构建相应的检索知识库。 2.使用PAI-LangStudio进行模版构建 您在LangStudio中使用预置的RAG模版进行定制化,创建适合具体应用的模板。 3.使用PAI-Langstudio构建在线应用 LangStudio提供了用户友好的界面,使用户能够轻松提交查询并获取答案。您可以使用创建好的模板构建符合业务需求的在线应用。 一、前置准备 在开始执行操作前,请确认您...
- 下一篇
构建AI Agent必学的4种设计模式,一文了解
编者按: 在构建 AI 助手和智能体时,应该采用怎样的设计模式才能让它们更加高效、可靠? 我们今天为大家带来的这篇文章详细介绍了四种设计模式的特点和应用场景:Reflection Pattern 通过自我评估来优化输出和决策;Tool Use Pattern 让 AI 能够调用和整合外部工具;Planning Pattern 将复杂任务分解为可管理的子任务;以及 Multi-Agent Collaboration Pattern 实现多个 AI Agent 之间的协作。 作者引用了 Andrew Ng 的观点,指出虽然后两种模式富有前景,但目前的不确定性较高,而 Reflection 和 Tool Use 模式则已经相对成熟可靠。 作者 | Lorenz Hofmann-Wellenhof 编译 | 岳扬 生成于 flux-dev,提示词为(为我生成一幅水彩画图像,背景为米色,上面有手写的红色文字:"4 AI agent patterns") 鉴于我所在的公司正积极布局语音虚拟助手领域[1],我觉得有必要掌握相关的基础知识和了解当前发展状况。 在本文中,我们将一同探讨 AI agent...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6