专栏首页黄希彤的专栏Discuz! 论坛使用云数据库可能遭遇随机的“The table XXX is full”异常
原创

Discuz! 论坛使用云数据库可能遭遇随机的“The table XXX is full”异常

一个Discuz! 论坛在腾讯云已经良好工作了很久,不久前突然随机出现以下错误:

从字面意思上看,就是数据表“common_visit”满了写不进去,最可能的就是磁盘满了。不过这个论坛使用的是云数据库CDB,所以也可能是云数据库的容量用完了。登陆上去查一下使用情况:

10G的空间还只用了2.6G,远远没有满呢,那是出了什么问题呢?

其实 Discuz! 论坛多年前设计的时候,把一些临时性的需要频繁读写的数据表设计为了内存表,这样避免在读写这些表的时候会产生磁盘 io 操作,从而提高了系统的性能。这在那个软硬件性能相比今天非常弱的时代无疑是一个巨大的优化。

但是这样需要确保数据库有足够多的内存来创建内存表。其实在现在的云数据库 CDB 中, io 性能瓶颈已经被极大的打开了,内存表起到的优化作用很有限,相反很容易带来内存不足导致的 table is full 问题。

比较容易的解决方案是把满掉的内存表清空,但是这样会带来一些非核心数据的损失,而且治标不治本,智能临时性的缓解问题:

truncate table common_visit;

更好的选择是把内存表变成innoDB表:

alter table common_visit engine=innoDB;

变更后问题迎刃而解。这样只要放弃一点点看不到影响的性能,就可以比较长久的化解这个问题。

如果有时间可以顺手把其他内存表也都变为innoDB,避免在其他表上再次发生类似的悲剧。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 服务器一秒钟丫鬟变格格

    某个产品3月24日晚上22:00到23:59之间的外网出入带宽曲线。从曲线可以看到,在晚上十点半左右,流量瞬间从5M飙升到200M。中间发生了什么呢?本文详细讲...

    黄希彤
  • 就算云厂商水逆了,服务也不能倒

    这阵子接连发生极小概率事件:先是几条光缆同时被挖断导致一个服务区失联、然后又是一个硬盘出现罕见的静默错误(写入数据和读取出来的不一致)后居然被选中为主数据源导致...

    黄希彤
  • 为 discuz 论坛智能开启 CC 对抗

    discuz论坛如何做到只在被攻击的时候开启对抗策略,而在攻击结束的时候自动关闭掉呢?

    黄希彤
  • flask第33篇——加载静态文件

    静态文件主要包括css,JavaScript等脚本文件、图片等,在加载文件的时候主要是用url_for方法。

    用户2149234
  • 用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事

    导读:这篇文章利用简单的Python爬虫、邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详尽的文章。

    刘早起
  • swagger报错This application has no explicit mapping for /

    是因为swagger-ui.html 是在springfox-swagger-ui.jar里的,因为修改了路径Spring Boot不会自动把/swagger-...

    似水的流年
  • 还在写日报?python来帮你

    看到同事每天花很多时间来写测试报告,从jira里面总结数据,然后编辑各种格式,写成邮件发出来。虽然jira里面dashboard也可以看到一些,也能导出exce...

    赵云龙龙
  • SAP系统玩阴的?

    近日和项目上的ABAP开发顾问一起弄一个自开发的报表。其中某个栏位的取值需要从批次主数据里抓取到供应商代码,然后根据供应商代码取到供应商名称等。为此笔者需要备功...

    人称T客
  • Python3多进程+协程异步爬取小说

    之前写了一篇关于用多线程爬小说的博客,但是发现爬取16M的小说需要十几分钟,所以今天更新了一篇用多进程外加使用单线程异步的协程同样爬取之前用多线程爬取的同一篇小...

    HcodeBlogger
  • 转-游戏服务端大访问量大并发的优化解决方案?

    所有的对象都放在内存,20万用户以下无压力。 如果游戏的用户很多,例如超过50万,内存就会不够,可使用LRU算法来淘汰一些数据。 流程:收到用户请求 - 在...

    李海彬

扫码关注云+社区

领取腾讯云代金券