• 磁盘空间占满导致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
    
    • 1

    然后清理/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
    
    • 1
    • 2

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

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

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

    service mysqld restart
    
    • 1

    打开错误日志过滤出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
    
    • 1
    • 2
    • 3

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

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

    sh startup.sh
    
    • 1

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

    问题复盘

    1. 配置好confluence预定作业的时间间隔(主要是备份系统);
    2. 定时清理confluence的备份文件;
    3. 为mysql配置好mysqld-log.err的文件大小。
  • 相关阅读:
    MATLAB求极限
    Django毕业设计源代码学生在线选课系统
    bug: https://aip.baidubce.com/oauth/2.0/token报错blocked by CORS policy
    Springboot集成kafka高级应用实战
    校园网免认证登录的方法-利用udp53端口
    动物主题网页设计(学生期末作业必看)
    LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙/LLaMA 2
    TIA博途中累计流量的两种计算方法示例
    Docker(7)Redis主从配置和集群配置
    【四旋翼飞行器】模拟四旋翼飞行器的平移和旋转动力学(Simulink仿真实现)
  • 原文地址:https://blog.csdn.net/lqlqlq007/article/details/125887056