只是玩玩 All work and no play makes Jack a dull boy

服务器经常莫名死机和后遗症

分享 ,

不堪重负

在腾讯云买的 1c2g 6m 的轻量云不知道是不是服务架的太多还是什么原因,今年开始频繁出现死机、无反应的情况,死机的时候也无法通过 ssh 登录终端,且出现这种情况后搭建的所有应用会全部挂掉,腾讯云控制面板里的监控这一段的信息为空白。

根据腾讯云提供的 云服务器无监控数据排查手册 指引,结合监控面板的数据来看不排除是负载过高。

  • 系统内存占用比常年处于 80% 左右
  • CPU 负载基本维持在 20% 左右。
  • 储存空间上次出现这个问题后清除了 docker 的一些日志后从 98% 掉到了现在的 89%。
  • 宽度负载最高 4m 左右,平均 1.58

目前看来性能可能的确到了瓶颈,这台机器用了也有五六年了,的确该换了。

机器是今年 11 月底过期,先凑合用着,等到了 618 或者双 11 蹲一个性价比高的机器看看。


后遗症

昨天死机后重启服务器,发现提示主题确实,当时还没太注意。

今天早上发现 Ghost 版本好像不对,进终端检查了一下,发现 docker 里的 Ghost 没启动成功,但是访问博客却可以访问。

之前也遇到过这个情况,服务器在重启后 ghost-cli 会提前运行 安装版 的博客,因为占用了端口导致 docker版 的 ghost 无法运行,所以我用 ghost-cli 停止了安装版本的运行,重新用 docker run 运行 Docker 版本。(为了避免以后再次出现这种情况,我们用 ghost stop --disable 告诉 ghost-cli,不要在系统启动时启动 ghost 服务。)

但是运行失败,系统提示数据库 connect ECONNREFUSED 127.0.0.1:3306 。不能链接数据库?不对啊,我的 umami 也是用的同一个数据库,且正常运行的,只能一个个排查问题

  1. mysql 是不是没启动?
    sudo service mysql status 查看,发现数据库是正常运行的,而且我的 umami 也是正常的,pass
  2. 端口是不是不对
    我用 MySQL 命令可以直接登录,且 netstat 看 3306 端口是有监听的。
  3. docker-compose 的配置文件是不是不对?
    文件没动过,只有里面的数据库地址是 localhost 而错误提示里是 127.0.0.1 ,试着改成错误提示里的 127.0.0.1,重新 docker-compose up -d 后还是出错。
  4. mysql 的用户权限是不是不对?
    select host,user from user 看 ghost 数据库账号的 host 信息,发现是 localhost,通过 update 命令改成 % ,还是不行。

解决

各种办法都排查了一遍,找资料的过程中发现一篇文章中说用 mysqld --console  看运行信息,发现报错信息如下:

2023-05-28T02:18:14.764463Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-05-28T02:18:14.769927Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27-0ubuntu0.20.04.1) starting as process 332596
2023-05-28T02:18:14.808340Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-05-28T02:18:14.808352Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2023-05-28T02:18:14.824753Z 0 [Warning] [MY-010122] [Server] One can only use the --user switch if running as root
2023-05-28T02:18:14.824785Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/var/lib/mysql/' (OS errno: 13 - Permission denied)
2023-05-28T02:18:14.824942Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-05-28T02:18:14.841286Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27-0ubuntu0.20.04.1)  (Ubuntu).

mysqld --initialize-insecure 初始化后,发现可以正常访问了。但是我重新运行 mysqld --console 后发现错误信息依旧,所以不排除是我上面的其他步骤修好的。

不过算是弄好了。

END

作者: 1900

最后修改:

加入评论