You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL报2002 Connection refused错误 如何确认是否为内存不足导致

问题根因验证方法

确认是否为内存不足触发OOM Killer

  • 执行如下命令查看系统日志是否有OOM杀掉MySQL的记录:
    grep -i 'oom-killer' /var/log/syslog
    dmesg | grep -E 'mysql|oom'
    
    如果返回结果中存在Out of memory: Killed process xxx (mysqld)相关内容,即可确认是内存不足导致系统主动杀死MySQL进程,对应你日志中的code=killed, signal=KILL(信号9就是系统强制终止进程的标记)。
  • 也可以安装系统监控工具查看历史内存占用:
    sudo apt update && sudo apt install sysstat -y
    sar -r
    
    观察MySQL崩溃时间段的内存可用量,如果接近0即可验证内存不足的猜想。
永久解决方案

方案1:添加Swap分区(零成本,优先推荐)

1GB内存的DigitalOcean基础款默认未开启Swap分区,添加2GB Swap可以有效缓解内存不足的问题,操作步骤:

# 创建2G大小的Swap文件
sudo fallocate -l 2G /swapfile
# 设置正确权限
sudo chmod 600 /swapfile
# 格式化Swap
sudo mkswap /swapfile
# 启用Swap
sudo swapon /swapfile
# 写入fstab保证重启后生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

方案2:优化MySQL内存配置

编辑MySQL配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,调整以下参数适配小内存环境:

innodb_buffer_pool_size = 64M
innodb_log_file_size = 32M
max_connections = 50
key_buffer_size = 16M
query_cache_size = 16M

修改完成后重启MySQL生效:sudo systemctl restart mysql。你的站点月访问仅3000次,以上参数完全可以满足需求。

方案3:配置服务自动重启

配置systemd让MySQL崩溃后自动拉起,避免手动操作:
执行sudo systemctl edit mysql,在打开的文件中添加以下内容:

[Service]
Restart=always
RestartSec=5
StartLimitInterval=0

保存后重载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart mysql

后续MySQL只要异常退出都会自动重启。

方案4:升级服务器配置

如果预算允许,直接升级到2GB内存的服务器,是最彻底的解决方案。

你之前调整端口、修改通信命令的操作没有作用,因为问题本质是MySQL进程被系统终止,端口监听自然不存在,才会返回连接拒绝的报错,和端口配置无关。

内容的提问来源于stack exchange,提问作者Buggy Uigy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:06:03