内存基础
Linux 的内存管理和 Windows 有所不同。Linux 会把空闲内存用来做缓存(buffer/cache),这部分内存其实是可以被程序快速回收的,所以看 free -h 时,available 才是真正可用的内存,而不是只看 free。
常用命令
# 查看内存使用概况
free -h
# 查看内存占用前10的进程
ps aux --sort=-%mem | head -n 11
# 查看详细内存信息
cat /proc/meminfo
# 实时监控内存
watch -n 1 free -h
常见内存问题
Java/MySQL 等常驻服务内存占用过高
Java 进程的 -Xmx 如果没有设置,默认可能会吃掉大量内存。MySQL 的 innodb_buffer_pool_size 也要根据机器实际内存合理配置。
内存泄漏
如果内存持续增长且无法回收,可能是程序有内存泄漏。用 valgrind 或 pmap 分析具体进程的内存分配。
Swap 使用
如果 Linux 开始大量使用 swap,说明物理内存不足了。对于小机器来说,优化配置或迁移到更高规格的机器是更彻底的解决方案。
这次迁移的经验
Halo 加上 MySQL 实际内存占用接近 800MB,迁移到纯静态方案后,内存降到了 400MB,剩余空间非常充裕。
对于资源受限的小服务器,能用静态方案解决的,就不要上动态 CMS。