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

AWS免费层EC2实例中MariaDB服务自动停止问题求助

问题原因分析

核心原因是1GB内存的EC2实例资源不足,默认配置的LAMP组件(Apache、PHP、MariaDB)会占用大量内存,当系统剩余内存耗尽时,Linux的OOM Killer(内存不足进程杀手)会自动终止内存占用最高的进程,而MariaDB(mysqld)通常是内存消耗大户,因此会被优先终止。

排查验证步骤

先确认是否是OOM Killer导致的服务停止:

  • 查看系统日志:
    dmesg | grep -i "out of memory"
    # 或者
    cat /var/log/messages | grep -i oom
    
    如果输出中包含mysqld被终止的记录,即可确认是内存不足触发的OOM。
解决办法

一、精准优化MariaDB内存配置

针对1GB内存实例,大幅削减MariaDB的内存分配,修改/etc/my.cnf(或/etc/mysql/my.cnf,依系统而定):

[mysqld]
# InnoDB缓冲池,1GB内存建议设为128M-256M
innodb_buffer_pool_size = 128M
# 降低单连接内存占用
sort_buffer_size = 64K
read_buffer_size = 64K
read_rnd_buffer_size = 64K
join_buffer_size = 64K
# 限制最大连接数,避免连接过多耗尽内存
max_connections = 50
# 关闭已废弃的查询缓存
query_cache_type = 0
query_cache_size = 0
# 关闭不必要的性能统计
performance_schema = OFF

修改后重启MariaDB:

systemctl restart mariadb

二、优化Apache资源占用

调整Apache的MPM(多处理模块)配置,限制进程数以降低内存消耗:

  1. 编辑/etc/httpd/conf.modules.d/00-mpm.conf,确保启用prefork模块(注释掉其他MPM模块):
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    # LoadModule mpm_worker_module modules/mod_mpm_worker.so
    # LoadModule mpm_event_module modules/mod_mpm_event_module.so
    
  2. 在/etc/httpd/conf/httpd.conf末尾添加:
    <IfModule mpm_prefork_module>
        StartServers       2
        MinSpareServers    2
        MaxSpareServers    5
        MaxRequestWorkers  20
        MaxConnectionsPerChild  1000
    </IfModule>
    
  3. 重启Apache:
    systemctl restart httpd
    

可选:换成Nginx替代Apache,内存占用会降低50%以上

三、添加Swap分区缓解内存压力

给实例创建1GB的Swap文件,作为内存的临时补充:

# 创建Swap文件
fallocate -l 1G /swapfile
# 设置权限
chmod 600 /swapfile
# 格式化Swap
mkswap /swapfile
# 启用Swap
swapon /swapfile

设置开机自动挂载Swap:
编辑/etc/fstab,添加一行:

/swapfile swap swap defaults 0 0

四、优化PHP-FPM配置(如果使用)

修改/etc/php-fpm.d/www.conf,限制PHP进程数量:

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5

重启PHP-FPM:

systemctl restart php-fpm

五、监控资源消耗

  • 用htop实时查看内存、CPU占用,定位资源消耗最高的进程;
  • 用mysqladmin status查看MariaDB的连接数、线程数,确认是否存在异常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:15:40