首页 > 其他分享 >线上问题排查——磁盘满

线上问题排查——磁盘满

时间:2024-08-14 14:50:30浏览次数:5  
标签:binlog log space 排查 secs 线上 ERROR 磁盘 日志

现象

群里反馈管理后台登录不上了,我一访问,整个界面空白,没有提示,打开 F12,发现控制台提示 js、css 等静态资源报 net::ERR_HTTP2_PROTOCOL_ERROR,客户端可以下载到服务端资源,第一次碰到这个,StackOverflow 走起

net::ERR_HTTP2_PROTOCOL_ERROR 是关于什么的?

可能出现的问题非常多,包括磁盘满、nginx 配置问题、请求头问题、浏览器问题、cdn 问题。因为这个服务没有更新过,也没人动过配置,所以不太可能是 nginx、服务的问题,另外每次下载 js 文件,似乎都不是完整的,虽然服务器都有做出响应。

所以初步判断是服务器出了问题,但是没有配置 ssh,登录阿里云后台的手机也在公司,没办法看到服务器监控。

此时发现多刷新几次,利用浏览器的本地缓存,首页还是能访问出来的,但是登录功能无法响应,如果填了错误的验证码,可以立马返回错误信息。说明 MySQL 写受到了影响,基本上可以是断定服务器的磁盘、内存问题。

第二天到了公司看控制台监控,好家伙磁盘占用 99%

刷新了一下管理后台,响应非常非常的慢;先清理空间再验证是否这个问题

解决

列出所有挂载的文件系统,并显示每个文件系统的总空间、已用空间、可用空间和使用率。

df -h

#Filesystem      Size  Used Avail Use% Mounted on
#udev             16G     0   16G   0% /dev
#tmpfs           3.1G  724K  3.1G   1% /run
#/dev/vda1        99G   94G  343M 100% /
#tmpfs            16G     0   16G   0% /dev/shm
#tmpfs           5.0M     0  5.0M   0% /run/lock
#tmpfs            16G     0   16G   0% /sys/fs/cgroup
#tmpfs           3.1G     0  3.1G   0% /run/user/0

这时候要注意了,如果直接从根目录递归查找,会消耗大量的 CPU 和 IO 资源,可能会导致服务器变得非常慢,甚至暂时无法响应,所以要一层一层来

# /* 换成对应的目录即可
du -sh /* | sort -rh | head -n 10

最终找出了两个目录,nacos 的 access 日志 和 MySQL binlog 日志,总计 80G 空间,其中大部分都是七天前的,可处理

对于 nacos 的日志,直接删了之前的就好。而 MySQL 的 binlog 文件,建议从控制台执行命令

# 删除 七天前的 binlog
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;

最终,处理了 40% 的空间

验证

多次强制刷新前端页面,静态资源和接口的响应速度也变快了。

接下来看一下昨天的日志,MySQL 除了写数据时获取不到锁,没有其他报错

包括 nginx 日志, /var/log/syslog 系统日志,/var/log/mysql/error.log 提示空间不足

2024-08-13T02:27:02.537301Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.
2024-08-13T02:37:02.571302Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.
2024-08-13T02:47:02.605275Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.
2024-08-13T02:57:02.640862Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.
2024-08-13T03:07:02.674508Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.
2024-08-13T03:17:02.710238Z 1256492 [ERROR] [MY-000035] [Server] Disk is full writing './binlog.000556' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.

除了页面实际上变快了,没有其他日志信息进一步确认

后续工作

由于日志问题导致磁盘空间不足,需要启用定时器或者自带工具进行定时清理

nacos access 日志

对于 nacos 没有提供对 access log 没有提供大小、分割配置,只有开关,而线上不建议关闭,所以需要编写 shell 脚本,加入定时器中

生产环境编写定时任务Crontab, 将脚本放到/etc/cron.daily 目录,赋予可执行权限

#!/bin/bash

logFile="/data/nacos/bin/logs/nacos_del_access.log"
# 保留14天日志
date=`date -d "$date -14 day" +"%Y-%m-%d"`
# 具体位置可调整
delFilePath="/data/nacos/bin/logs/access_log.${date}.log"

if [ ! -f "${logFile}" ];then
	echo 'access log文件打印日志频繁. /etc/cron.daily/nacosDelAccessLogs.sh 会定时删除access日志文件' >>${logFile}
fi
# 日志文件存在, 则删除
if [  -f "${delFilePath}" ];then
	rm -rf ${delFilePath}
	curDate=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
	echo '['${curDate}'] 删除文件'${delFilePath} >>${logFile}
fi

MySQL binlog

建议保留七天或十四天,使用 MySQL 自带配置即可

# 我的默认配置三十天
# -- binlog_expire_logs_seconds	2592000
# SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
SET GLOBAL binlog_expire_logs_seconds = 604800;

show VARIABLES like 'expire_logs_days';
set global expire_logs_days = 7;
之前是使用这两个命令,新版 MySQL 被废弃了

永久生效,my.conf,需要重启

[mysqld]
binlog_expire_logs_seconds = 604800

后面添加日志,需要进行管理和轮换日志文件,可以考虑使用 logrotate

参考:

  1. https://stackoverflow.com/questions/58215104/whats-the-neterr-http2-protocol-error-about
  2. https://blog.csdn.net/wtzvae/article/details/107212870
  3. https://blog.51cto.com/haibo0668/5486115
  4. https://blog.csdn.net/mr_wanter/article/details/112515814
这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/Go-Solo");
console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18358836");

标签:binlog,log,space,排查,secs,线上,ERROR,磁盘,日志
From: https://www.cnblogs.com/Go-Solo/p/18358836

相关文章

  • [天线原理及设计>基本原理] 2. 细线天线上的电流分配
    2.细线天线上的电流分配为了说明线性偶极子上电流分布的产生及其随后的辐射,让我们首先从无损双线传输线的几何形状开始,如图1.15(a)所示。电荷的运动沿每条导线产生幅度为I0/2的行波电流。当电流到达每根电线的末端时,它会经历完全反射(幅度相等,相位反转180°)。当反射行波与入射行......
  • JSP河南口腔医疗诊所线上服务系统a11h1--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,医生,科室,医生信息,挂号信息,药品信息,取消挂号开题报告内容一、课题名称河南口腔医疗诊所线上服务系统设计与实现二、研究背景与意义随着互......
  • ssm线上民宿租贷系统/计算机毕设
    摘要伴随着信息技术地不断提高,互联网提供的服务越来越多,已经不局限于实体购物。现在越来越多的服务都可以通过网上购买实现,优秀的线上民宿租贷系统能够更有效管理租贷业务规范,帮助管理者更加有效管理租贷信息,可以帮助提高克服人工管理带来的错误等不利因素,并且可以吸引更多......
  • SSM基于Java通识课程管理系统v87xr 线上测试
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,教师,教学视频,课程信息,选课信息,专业,学院,职称开题报告内容一、课题背景随着信息技术的飞速发展,教育领域对高效、智能的管理系统需求日益迫切......
  • 记一次 JVM 崩溃问题排查(G1 日志分析)
    背景上周五业务高峰期,有一个java实例毫无征兆的crash了,第一时间应用重启之后,将对应的崩溃日志保留,后面做分析。先说一下该服务的具体情况:jdk版本:1.8.0_152-b16服务器信息:16C32G启动参数:-Xms18g-Xmx18g-Xss256k-XX:MetaspaceSize=256m-XX:MaxMetaspaceSize=512m-XX:......
  • java面试题:CPU飙高问题如何排查
    在Java面试中,关于CPU飙高问题的排查是一个常见的考点。以下是针对这一问题的详细排查步骤和建议:一、初步诊断1.查看系统监控:使用系统监控工具(如Windows的任务管理器、Linux的top或htop命令)查看当前CPU使用情况,找出哪个Java进程占用了大量CPU资源。注意观察CPU使用率的波......
  • kubernetes记录一起因为磁盘容量不足造成pod无线驱逐pod状态为Evicted
    线上的pod遭到无线的驱逐fxxx-xxxx-deploy-86684b76ff-2vkdx0/1Evicted030m<none>10.10.10.10<none><none>fxxx-xxxx-deploy-86684b76ff-5j6fd0/1Evicted030m<none&......
  • 基于SpringBoot+MySQL+SSM+Vue.js的线上教育培训办公系统(附论文)
    获取见最下方名片信息获取见最下方名片信息获取见最下方名片信息演示视频基于SpringBoot+MySQL+SSM+Vue.js的线上教育培训办公系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybat......
  • 车载网络测试实操源码_使用CAPL脚本对CAN总线上的错误帧进行实时监控
    系列文章目录车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文车载网络测试实操源码_使用......
  • 基于django+vue线上音乐俱乐部系统设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容进度安排:时间主要工作预期阶段成果2024年1月搜集资料、撰写开题报告完成开题报告2024年2月系统设计完成系统设计2024年3月......