👨‍💻 只是玩玩 | JUST FUN

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

不堪重负

在腾讯云买的 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