Linux服务器内存管理基础

内存基础

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 也要根据机器实际内存合理配置。

内存泄漏

如果内存持续增长且无法回收,可能是程序有内存泄漏。用 valgrindpmap 分析具体进程的内存分配。

Swap 使用

如果 Linux 开始大量使用 swap,说明物理内存不足了。对于小机器来说,优化配置或迁移到更高规格的机器是更彻底的解决方案。

这次迁移的经验

Halo 加上 MySQL 实际内存占用接近 800MB,迁移到纯静态方案后,内存降到了 400MB,剩余空间非常充裕。

对于资源受限的小服务器,能用静态方案解决的,就不要上动态 CMS。

← 返回文章列表