在1G内存2核的服务器上部署Node.js和MySQL,能跑的服务数量取决于以下几个关键因素:
一、内存分配建议
基础分配:
- MySQL:至少512MB(生产环境建议)
- Node.js:每个实例约100-300MB
- 系统开销:约100-200MB
二、可能的部署方案
方案A:保守配置(稳定优先)
- MySQL:512MB
- Node.js服务:1个(200-300MB)
- 剩余内存:200MB左右用于系统和缓存
- 可运行服务数:1-2个
方案B:优化配置(最大化利用)
- MySQL:384MB(通过优化配置)
- Node.js微服务:2-3个(每个150MB)
- 使用PM2集群模式
- 可运行服务数:2-3个
方案C:轻量级方案
- 使用SQLite替代MySQL(节省200MB+)
- Node.js服务:3-4个
- 可运行服务数:3-4个
三、优化建议
MySQL优化:
# my.cnf 优化配置
[mysqld]
innodb_buffer_pool_size = 256M
key_buffer_size = 32M
max_connections = 50
query_cache_size = 32M
Node.js优化:
- 使用Nginx反向XX多个Node.js应用
- 启用PM2集群模式充分利用双核
- 内存优化:
// 启用垃圾回收优化 node --max-old-space-size=256 app.js
架构优化:
- 微服务拆分:将大应用拆分为独立的小服务
- 静态资源分离:使用CDN或对象存储
- 数据库分离:考虑将MySQL迁移到云数据库服务
四、监控与调整
-
监控工具:
htop/top查看实时内存使用pm2 monit监控Node.js应用- MySQL
SHOW STATUS查看数据库状态
-
预警阈值:
- 内存使用超过80%时考虑优化
- SWAP使用频繁时需要扩容
五、实际建议
对于生产环境:
- 建议只运行1-2个核心服务
- 考虑升级到2GB内存(成本增加有限)
- 使用Docker限制每个容器的资源使用
对于开发/测试环境:
- 可运行2-3个轻量级服务
- 定期重启服务释放内存
总结:在1G内存的服务器上,最稳妥的方案是运行1个MySQL + 1-2个Node.js服务。如需更多服务,必须进行深度优化或考虑升级配置。
CLOUD技术笔记