阿里云系统磁盘总读BPS突然增长很高,导致网站502 Bad Gateway

问题再现

阿里云诊断提示IO延迟过长,导致读写受限

最近迁入阿里云主机(99计划2H+2G)后经常发现会出现死机的情况,呈现的状态就是网站无法访问,阿里云实例监控查看,是实例云盘读写 BPS 100M以上。

解决方向

1、调整交换分区减缓瞬时内存压力

既然发生了OOM,那必然是内存捉襟见肘了。这里先根据网友 @慧眼见真 增加 swap 试试看。

以下均为 root 权限执行

# 查看系统内存情况
free -h

# 查看交换内容情况
swapon --show

# 指定 swap 文件并分配 3G 大小
fallocate -l 3G /swapfile

# 修改权限
chmod 600 /swapfile

# 格式化为 swap
mkswap /swapfile

# 启用 swap
swapon /swapfile

# 永久启用
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

重要!接下来需要调整内存交换性

# 查看交换分区积极性,当为 0 表示不使用交换分区
cat /proc/sys/vm/swappiness

# 临时调整
# 可以简单理解为当内存占用 (100-10)% 时开始使用交换分区
sysctl vm.swappiness=10

# 永久调整
vim /etc/sysctl.conf
vm.swappiness=10

# 重新加载内核参数配置
sysctl -p

禁用dnf的自动更新

# 确认相关任务存在
systemctl list-timers 'dnf-*'

# 禁用任务
systemctl stop dnf-makecache.timer
systemctl disable dnf-makecache.timer

# 之后我们可以手动更新
dnf check-update

参考文章
阿里云 系统磁盘总读BPS 突然增长很高,导致网站502 Bad Gateway_问答-阿里云开发者社区 (aliyun.com)
如何在 Linux 上创建和使用交换文件 (linux-console.net)

后话:

当然,如果你的程序确实有较大占用内存的如MySQL,可以适当配置参数降低占用。
不同内存大小的MySQL配置方案 – wking’s blog (wkings.blog)
1核1G内存云服务器的mysql5.7内存占用过大参数优化

posted @ 2025-12-29 20:27  木子欢儿  阅读(1)  评论(0)    收藏  举报