单台Linux服务器同时部署Redis和MySQL,推荐的最低硬件配置是什么?

在单台 Linux 服务器上同时部署 Redis 和 MySQL(非生产环境,如开发、测试、小型内部应用或低流量轻量级服务),推荐的最低硬件配置需兼顾两者基础运行需求及合理隔离性。以下是分场景的务实建议:


✅ 推荐最低配置(适用于:开发/测试环境、日活 < 100 的内部工具、QPS < 50 的简单 Web 应用)

组件 推荐最低配置 说明
CPU 2 核(vCPU 或物理核心) MySQL 启动+基础查询 + Redis 单线程处理需至少 2 核避免严重争抢;1 核极易因 I/O 或锁竞争导致响应延迟飙升
内存 4 GB RAM ⚠️ 关键瓶颈!
• MySQL:建议分配 innodb_buffer_pool_size = 1.5–2 GB(占总内存 40–50%)
• Redis:建议预留 1–1.5 GB(若数据集 ≤ 500 MB,留余量防 OOM)
• 系统+其他进程:需 ≥ 512 MB
低于 4 GB 极易触发频繁 swap,性能断崖式下降
存储 ≥ 40 GB SSD(NVMe 更佳) • MySQL 日志(binlog、redo log、slow log)、数据文件增长快
• Redis RDB/AOF 持久化需额外空间
• 机械硬盘(HDD)不推荐:MySQL 随机写 + Redis 持久化 I/O 延迟高,响应不稳定
OS Linux(如 Ubuntu 22.04 / CentOS Stream 9) 内核 ≥ 5.4,支持现代 I/O 调度与内存管理

为什么不是“理论最低”(如 1C2G)?

  • MySQL 在 1G 内存下只能设置极小 buffer pool(如 256MB),InnoDB 性能急剧恶化,查询可能秒级延迟;
  • Redis 若开启 AOF 或 RDB,在 2G 内存下无余量应对 fork() 内存翻倍(Linux Copy-on-Write),极易 OOM Kill;
  • 实测表明:3GB 内存是临界点,但 4GB 是稳定可用的底线

⚠️ 重要注意事项(决定能否稳定运行)

  1. 内存分配必须手动调优(不可依赖默认值)

    # my.cnf(MySQL)
    innodb_buffer_pool_size = 1800M   # ≈ 1.8GB,勿超总内存50%
    innodb_log_file_size = 128M
    max_connections = 100             # 避免连接数爆炸耗尽内存
    
    # redis.conf(Redis)
    maxmemory 1200mb                  # 显式限制,防止吃光内存
    maxmemory-policy allkeys-lru      # 合理淘汰策略
    save 300 10                       # 减少 RDB 频率(或禁用 save,用 AOF)
    appendonly yes                    # AOF 更安全(但需权衡性能)
  2. I/O 隔离建议

    • 若为单盘 SSD,将 MySQL 数据目录(/var/lib/mysql)和 Redis 持久化目录(/var/lib/redis)放在同一挂载点但不同子目录即可;
    • 强烈建议禁用 swapsudo swapoff -a && sudo sed -i '/swap/d' /etc/fstab),避免内存压力下 swap 导致 Redis/MySQL 假死。
  3. 监控必备

    # 实时观察内存压力
    watch -n 1 'free -h && echo "---" && ps aux --sort=-%mem | head -5'
    # 检查 Redis 内存使用
    redis-cli info memory | grep -E "used_memory_human|maxmemory_human"

🚫 不推荐的场景(即使硬件达标也应拆分)

场景 原因
生产环境(任何用户付费/核心业务) 单点故障、资源争抢(MySQL 内存抖动影响 Redis 响应)、安全隔离不足(如 Redis 未设密码暴露 MySQL 网络)
Redis 用作缓存且 MySQL QPS > 100 CPU 成为瓶颈(MySQL 查询解析 + Redis 网络事件循环争抢)
Redis 存储 > 1GB 数据或启用 Redis Cluster 内存与 fork 开销剧增,4GB 不足

✅ 生产环境强烈建议:

  • Redis 独立部署(或容器化隔离)
  • MySQL 使用专用实例(或至少与 Redis 分开物理机/云主机)

💡 总结一句话建议:

开发/测试环境最低可行配置:2核 CPU + 4GB 内存 + 40GB SSD,且必须手动限制 MySQL Buffer Pool 和 Redis maxmemory,并关闭 swap。低于此配置,稳定性与可维护性将显著下降。

如需根据您的具体场景(如数据量、并发量、是否持久化、SLA要求)进一步优化配置,欢迎提供详细信息,我可为您定制 tuning 方案。

未经允许不得转载:云计算HECS » 单台Linux服务器同时部署Redis和MySQL,推荐的最低硬件配置是什么?