GreatSQL temp文件占用时长分析

打印 上一主题 下一主题

主题 1729|帖子 1729|积分 5187

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
GreatSQL temp文件占用时长分析

GreatSQL  DBA在一样寻常工作中可能会遇到这种情况,存在一个 InnoDB 引擎下的 temp_x.ibt 文件很大,但是却无法确定这个文件是什么时间由哪个连接建立的,难以支持后续定位问题,今天这篇文章彻底讲明白这个问题。
现象:发现一个实例下面(4406端口对外提供服务的实例)temp文件很大,如下所示:
  1. -rw-r----- 1 greatsql greatsql       81920 Sep 26 23:56 temp_1.ibt
  2. -rw-r----- 1 greatsql greatsql       81920 Sep 30 16:43 temp_10.ibt
  3. -rw-r----- 1 greatsql greatsql       81920 Sep 26 23:56 temp_2.ibt
  4. -rw-r----- 1 greatsql greatsql       81920 Sep 26 23:56 temp_3.ibt
  5. -rw-r----- 1 greatsql greatsql       81920 Sep 26 23:56 temp_4.ibt
  6. -rw-r----- 1 greatsql greatsql 18392023040 Oct  9 15:56 temp_5.ibt
  7. -rw-r----- 1 greatsql greatsql 18417188864 Oct 11 14:51 temp_6.ibt
  8. -rw-r----- 1 greatsql greatsql 18417188864 Oct 11 14:51 temp_7.ibt
  9. -rw-r----- 1 greatsql greatsql 18392023040 Oct  9 15:54 temp_8.ibt
  10. -rw-r----- 1 greatsql greatsql       81920 Sep 30 16:43 temp_9.ibt
  11. $ cd /data/greatsql/dbdata/datanode4406/data/#innodb_temp
  12. $ du -sm temp_6.ibt
  13. 17565   temp_6.ibt
复制代码
单个文件巨细到达17G,而且还在持续增加。
那么,这个文件是由那个连接占用的呢?
  1. $ ps -ef|grep greatsql|grep 4406
  2. 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  目次名称,可以得到这个历程在在这个端口上的连接的文件编号:
  1. $ lsof /data/greatsql/dbdata/datanode4406/data/#innodb_temp/temp_6.ibt
  2. COMMAND    PID    USER   FD   TYPE DEVICE    SIZE/OFF        NODE NAME
  3. 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,然后执行下面的命令:
  1. $ ll /proc/35049/fd/282
  2. 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即可。
  1. greatsql> SELECT * FROM information_schema.innodb_session_temp_tablespaces ;
  2. +---------+------------+----------------------------+-------------+----------+-----------+
  3. | ID      | SPACE      | PATH                       | SIZE        | STATE    | PURPOSE   |
  4. +---------+------------+----------------------------+-------------+----------+-----------+
  5. |   29356 | 4243767288 | ./#innodb_temp/temp_8.ibt  | 18392023040 | ACTIVE   | INTRINSIC |
  6. |     473 | 4243767285 | ./#innodb_temp/temp_5.ibt  | 18392023040 | ACTIVE   | INTRINSIC |
  7. |     907 | 4243767286 | ./#innodb_temp/temp_6.ibt  | 18417188864 | ACTIVE   | INTRINSIC |
  8. |     501 | 4243767287 | ./#innodb_temp/temp_7.ibt  | 18417188864 | ACTIVE   | INTRINSIC |
  9. | 1798928 | 4243767284 | ./#innodb_temp/temp_4.ibt  |      245760 | ACTIVE   | INTRINSIC |
  10. |       0 | 4243767281 | ./#innodb_temp/temp_1.ibt  |       81920 | INACTIVE | NONE      |
  11. |       0 | 4243767282 | ./#innodb_temp/temp_2.ibt  |       81920 | INACTIVE | NONE      |
  12. |       0 | 4243767290 | ./#innodb_temp/temp_10.ibt |       81920 | INACTIVE | NONE      |
  13. |       0 | 4243767289 | ./#innodb_temp/temp_9.ibt  |       81920 | INACTIVE | NONE      |
  14. |       0 | 4243767283 | ./#innodb_temp/temp_3.ibt  |       81920 | INACTIVE | NONE      |
  15. +---------+------------+----------------------------+-------------+----------+-----------+
  16. 10 rows in set (0.00 sec)
  17. greatsql>  KILL 907
  18. Query OK, 0 rows affected (0.00 sec)
复制代码
感谢大家观看,不足之处还请指正。

Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表