磁盘空间占满导致confluence6.3不可用问题修复流程

问题现象

使用confluence的同学陆续反馈有保存失败的情况,但新建页面仍可以正常保存——此现象表示磁盘空间即将占满:数据较多的页面保存时磁盘空间不足所以失败,新建页面由于数据较少磁盘空间还可以满足因此仍可以保存成功;

为了不影响大家使用confluence,因此在问题定位时没有停掉confluence服务,但很快问题开始恶化:confluence页面无法正常显示,页面报错:org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connect——此现象表示由于磁盘空间已满,confluence服务已经无法连接mysql数据库了(磁盘表示我真的一滴也没有了)。

问题定位

通过ssh工具连接服务端后台,执行df -h命令可以看到,确实有一个分区使用率已经达到100%了。因为服务器上只有confluence使用比较频繁,因此盲猜是confluence导致磁盘空间占满了。

接下来分析是什么数据占满了接近200G的磁盘——confluence内视频文件不超过5G,其他都是文本文件,因此不可能是因为系统内数据过多导致磁盘不够用,那原因就只有一个,系统预定作业(即定时任务)生成了大量冗余文件。

但是因为此时confluence页面已经无法访问,因此无法看到系统有哪些预定作业,这时候又要靠盲猜了——是不是定时备份文件太多占满了磁盘?

不废话,赶紧去看一下confluence的备份情况——/var/atlassian/application-data/confluence/backups目录下差不多有一年的备份文件,从几百M到1G不等:磁盘早就已经是备份文件的形状了。

问题修复

既然已经确认是备份文件太多,那就开始清理吧,进入Confluence的安装目录(笔者的目录是/opt/atlassian/confluence/bin)停止confluence服务。

sh shutdown.sh

然后清理/var/atlassian/application-data/confluence/backups目录下的备份文件,笔者这里只留下了最新的备份文件backup-2022_07_20.zip,其他统统删掉。

登录mysql检查数据库是否恢复,但发现此时mysql数据库仍然无法访问,输入用户名密码后提示:Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’,看来光清理备份文件还不够,接下来分析mysql的这个问题的修复步骤:

因为连接mysql时给的错误信息描述不够清晰,因此我们得去看一眼mysql的错误日志,但是此时mysql已经无法正常登陆,我们看不到错误日志的路径,因此只能去mysql的配置文件里去找——查看/etc/my.cnf文件里的以下配置项:

datadir = /data/mysql/data
log-error=mysqld-log.err

即错误日志在/data/mysql/data目录下,错误日志名称为mysqld-log.err,但是因为笔者的mysql没有配置错误日志的文件大小,现在的这个错误日志大到无法通过vi命令打开查看,那该怎么看错误信息呢?

有两个办法,一个是通过tail命令查看实时最新打印的错误信息,另一个是重命名原来的mysqld-log.err,新的错误信息会打在新建的mysqld-log.err里(笔者这里用的是第二个办法,因为第一个办法需要新开一个ssh窗口,我懒)。

重命名后重启mysql,毫无疑问会启动失败,但这样就会生成新的错误日志了:

service mysqld restart

打开错误日志过滤出ERROR消息:

2022-07-20T20:55:01.379066+08:00 0 [ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock.
2022-07-20T20:55:01.379079+08:00 0 [ERROR] Unable to setup unix socket lock file.
2022-07-20T20:55:01.379094+08:00 0 [ERROR] Aborting

由于磁盘空间不足导致mysql宕机时/tmp/mysql.sock.lock文件未能正常删除,而残留的这个临时文件会影响mysql正常启动,那么我们手动把它干掉,然后就可以愉快的启动mysql了。

确认mysql恢复正常后,进入Confluence的安装目录(/opt/atlassian/confluence/bin)启动confluence服务。

sh startup.sh

此时confluence恢复正常,页面恢复访问。

问题复盘

  1. 配置好confluence预定作业的时间间隔(主要是备份系统);
  2. 定时清理confluence的备份文件;
  3. 为mysql配置好mysqld-log.err的文件大小。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值