当前位置:网站首页>The table ‘table_name‘ is full 异常排查及解决方案
The table ‘table_name‘ is full 异常排查及解决方案
2022-06-29 18:11:00 【わたしわ】
背景
项目上线运行了一年半的时间,在这期间因为需求的修改也做过一些改动,但是这个基础的下单功能从上线后未做过任何改动,且最近半年项目未更新,一直稳定运行包括这个下单功能,但是前天发生了下单失败的情况,最开始也未太多的关注,因为这个下单功能会去调用三方服务做前置操作(三方服务限制订单每个用户每天只允许下单一次,三方服务成功之后才做入库操作),并且提示给用户的信息是重复下单,所以用户下单失败且是重复下单的提示是属于正常现象;但是当天后续的订单都是失败重复下单的情况;此时就感觉到不对了。赶紧去查看了该服务的日志信息,日志信息如下:
看到线上服务有报错日志就能解释为何所有订单都会失败了,首先不论服务抛出任何异常信息,都会被全局的异常处理器捕获,包装成统一异常信息返回,当用户当天第一次下单的时候,在三方服务下单成功,但是我们自己的服务发生异常,前端显示错误提示,用户以为下单失败,发起第二次下单操作;此时调用三方服务会提示重复下单,我们服务将重复下单的提示返回前端,造成重复下单提示的假相从而让我们以为是正常的提示未做太多关注。
解决
根据异常提示是 “The table ‘xxx_order’ is full”,意思很明显就是order表满了,结合目前的场景是在插入订单的时候order表报的这个错,那么就是说order表空间不够,导致插入失败;这里又可以分为两种情况:
第一: 该表中的数据量超过了最大限制
如果使用的MyISAM存储引擎的话,MAX_ROWS参数会限制每张表的数据条数,可以查看对应表中的数据条数是否达到该值,达到则可以将该值设置调大;innodb存储引擎没有MAX_ROWS参数。
对于innodb存储引擎来说如果page size为16KB,那么表的大小最大为64TB;这个大小几乎不太可能达到,数据量过大会考虑分库分表操作。
第二: 服务器磁盘满了
我这里遇到的这个问题就是服务器磁盘占用满了,如果是服务器磁盘满的话,那么会导致所有的表都会插入失败,排查方式:
a、通过 df -h 指令,查看服务器磁盘使用情况,如果use一列加起来达到100%则说明磁盘使用完了,下图是删除过文件之后的情况,所以磁盘占用不是很高。
b、当查看到磁盘占用很高之后,从根目录开始查找哪个目录占用磁盘空间最大,指令:du -h --max-depth=1,可以看到usr、root、var三个目录占用磁盘最多,root目录一般是系统使用目录最好不要操作,那么接下来就分别切换到usr、var两个目录中,使用 du -h --max-depth=1 指令排查哪个目录占用磁盘最多,依次排查,找到占用磁盘最多的目录,然后删除其中不重要的文件,比如一些日志文件之类的,我这个问题,最后是查找到nacos的日志文件占用了六十多个G的磁盘,最后将nacos的这些日志文件删除掉就可以了
说明一下,MySQL在启动的时候会去校验磁盘剩余空间还有多少,如果你的磁盘占用满了,且停止了MySQL服务,那么此时是启动不了的,需要清理磁盘之后,剩余空间大于4G才可以启动。
一般来说服务器cpu、内存、磁盘等资源应当设置预警值,在达到预警值的使用量的时候就需要排查原因或加大服务器的对应资源;比如设置磁盘使用量达到90%进行预警,那么当预警触发的时候就需要去排查什么原因导致磁盘使用这么多,如果是一些不重要或无用的文件占用了很多磁盘,那么可以删除这些文件,如果这些文件都需要保留的话那么应当将文件备份后删除或增加服务器磁盘空间。
边栏推荐
- Weibo comments on high-performance and high availability architecture design (module 5 of architecture practice camp)
- Sd6.25 summary of intensive training
- 【TcaplusDB知识库】TcaplusDB单据受理-创建业务介绍
- 剑指 Offer 34. 二叉树中和为某一值的路径-dfs法
- JDBC knowledge
- 2022.6.29-----leetcode.535
- Servlet student management system (Mengxin hands-on version)
- 【TcaplusDB知识库】TcaplusDB单据受理-建表审批介绍
- Cannot retrieve repository metadata 处理记录
- 报错[warning] Neural network inference was performed on socket ‘RGB’, depth frame is aligned to socket
猜你喜欢
MySql存储过程循环的使用分析详解

Adobe Premiere基础-炫酷文字快闪(十四)

Us judge ruled that the former security director of Uber accused of covering up hacking must face fraud charges

Anaconda安装并配置jupyter notebook远程

熊猫跑酷js小游戏代码

Know that Chuangyu has helped the energy industry in asset management and was selected into the 2021 IOT demonstration project of the Ministry of industry and information technology

markdown知识轻轻来袭

Error building sqlsession problem

山东大学项目实训(六)点击事件展示折线图

Cannot retrieve repository metadata processing records
随机推荐
[tcapulusdb knowledge base] tcapulusdb doc acceptance - create business introduction
Apache InLong百万亿级数据流处理
The 8th "Internet +" competition - cloud native track invites you to challenge
EasyCVR部署服务器集群时,出现一台在线一台不在线是什么原因?
Weibo comments on high-performance and high availability architecture design (module 5 of architecture practice camp)
数据分析基础--预测模型
VMware安装ESXI
3H proficient in opencv (VII) - color detection
Request header field XXXX is not allowed by access control allow headers in preflight response
Servlet student management system (Mengxin hands-on version)
jdbc_ Related codes
codeforces每日5题(均1700)-第二天
Sd6.24 summary of intensive training
山东大学项目实训(八)设计轮播图进入页面
Amazing pandaverse:meta "borderless, to activate fashion attributes in the new journey of 2.0
Sister Juan takes you to learn database -- 5-day dash day4
Adobe Premiere foundation - cool text flash (14)
Cannot retrieve repository metadata processing records
Error building sqlsession problem
剑指 Offer 34. 二叉树中和为某一值的路径-dfs法