月度归档: 2024 年 6 月
-
为什么我会有内存焦虑的感觉?
这个事情,得从网站搬迁到1Panel的时候说起。
我的网站迁移至1Panel后,感觉磁盘空间节省了25%,而且对比宝塔面板,他的源代码完全开放,任何人都可以审查源代码的安全性。
有一天,我更新了OpenResty的版本,很不幸,这个版本有内存泄露的Bug,几天后,我收到了最新版本的OpenResty的更新,新版本已经修复了这个问题。
6月9日~14日,网站发生宕机事件,重启后,在后台监控看到磁盘IO被占满,与此同时,内存也被占满了。经过排查,是内存用完用SWAP,导致硬盘IO被占满,从而导致服务器宕机。
现在,在服务器运行的容器从十几个被砍到5~7个,才有了转机。对此,我对内存被占满的问题感到担忧。
-
为什么我是从 MySQL 用户迁移到 MariaDB 用户
序
这个故事,还得从4月末开始讲起:
第一章:从宝塔面板迁移至 1Panel
4月末,站长开始了宝塔面板替代计划,计划从宝塔面板迁移至 1Panel。当时, WordPress 的迁移用的是 Updraft Plus 插件恢复的,而宝塔面板的备份突然不灵了,备份网站没问题,但是备份数据库变成 20KB,所以不得不使用基于 Rclone 的备份脚本。迁移的时候数据库用的是 MySQL 8.2,当时没什么问题。
第二章:频繁宕机
在过去几天,服务器遭遇频繁宕机,本以为是 OpenResty 吃掉了太多的内存,后面经过更新后,OpenResty 也不吃内存了。后面经过一段时间的运行,网站也崩溃了。在经过与飞致云的社区人员交涉,原来是 MySQL 8.2 的内存优化太差了。
第三章:粉转黑
从此以后,我已经从 MySQL 的用户转成了 MariaDB 的用户,从此以后,再也没有使用 MySQL, 甚至在使用 Docker 镜像的时候也会对 MySQL 比较排斥。
-
服务器频繁宕机的背后,是一个有Bug的更新
序
在经历上一个版本的 1Panel 的 OpenResty App 更新,服务器出现了频繁宕机,磁盘读取经常被占满。后面经联系阿里云客服,得知是内存被占满后调用了 SWAP,最后导致硬盘读取被占满。
第一章:噩梦的开始
4月底,服务器迁移到了 1Panel,当时服务器一直在运行着 WordPress、 Yourls 和 FreshRSS。
5月21日,服务器发生了宕机事故,当时以为服务器是中了病毒,于是,服务器执行了重启。
第二章:求助
当我遇到这个症状后,向飞致云论坛的管理员求助:
https://bbs.fit2cloud.com/t/topic/5411
当时,这个问题是普遍性的Bug,后面,飞致云的管理员向我问了一些问题,我把当时发生的情况如实报告给了管理员。
第三章:真相大白
今日,飞致云发布了 1Panel 1.10.10 版本更新,同时发布了 OpenResty 1.21.4.3.-3-2-focal 镜像版本,这次更新修复了一个内存泄露的 Bug。真相大白,原来是 OpenResty 的内存占用高的离谱,现在已经修复了。
总结
总之,服务器经常宕机的原因是 OpenResty 的内存占用高的离谱,内存用完后用了磁盘的 SWAP,最后导致磁盘读取被占满的 Bug 出现了。