Debian 上 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)内存占用过高,通常不是单一原因,而是 多个服务配置不当 + 系统缓存机制 共同作用的结果。下面按最常见原因 → 排查方法 → 优化建议给你一个系统性的说明。
free -h
重点看:
✅ Linux 会尽量用内存做缓存,只要 available 还够,就不是异常
innodb_buffer_pool_size 设置过大top
# 或
ps aux --sort=-%mem | head
cat /etc/mysql/my.cnf
# 或
cat /etc/mysql/mariadb.conf.d/50-server.cnf
innodb_buffer_pool_size = 1G
✅ 建议值(小内存服务器)
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
重启:
systemctl restart mariadb
ps aux | grep php-fpm
/etc/php/*/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
✅ 256M 内存服务器建议
pm.max_children = 3~5
重启:
systemctl restart php*-fpm
worker_processes auto;
worker_connections 1024;
used = 应用使用 + buff/cache
✅ buff/cache 是健康的 ❌ 不要看到 used 高就慌
du -sh /var/log/*
du -sh /tmp
journalctl --vacuum-time=7d
nginx -t
tail -f /var/log/nginx/access.log
top
# 然后按 M(按内存排序)
ps aux --sort=-%mem | head -10
free -h
| 内存 | MySQL | PHP-FPM |
|---|---|---|
| 512M | 128M | max_children=3 |
| 1G | 256M | max_children=5 |
| 2G | 512M | max_children=10 |
Debian LNMP 内存高 90% 是 MySQL + PHP-FPM 配置不合理,而不是系统本身的问题。
如果你愿意,可以把下面信息发我,我可以 直接帮你给出最优配置:
free -h 输出我可以直接给你一份 可直接用的 my.cnf + php-fpm 配置。