在 Debian 上部署 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 后,发现内存占用高是比较常见的问题。通常不是“内存泄漏”,而是各组件默认配置偏保守或偏消耗资源。下面按常见原因和排查/优化方法说明。
这是 LNMP 内存高的头号原因。
默认配置(尤其是 innodb_buffer_pool_size)可能很大:
innodb_buffer_pool_size = 128M ~ 1G
如果你云服务器只有 1G / 2G 内存,很容易吃满。
✅ 查看:
ps aux | grep mysql
✅ 优化(示例,2G 内存):
[mysqld]
innodb_buffer_pool_size = 256M
key_buffer_size = 32M
max_connections = 100
PHP-FPM 默认可能开很多子进程:
pm = dynamic
pm.max_children = 50
每个 PHP 进程可能 30–80MB,50 个就是 1.5G+。
✅ 查看:
ps aux | grep php-fpm
✅ 优化(2G 内存示例):
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
Nginx 本身很轻量,但:
worker_processes 过多keepalive_timeout 过长✅ 建议:
worker_processes auto;
keepalive_timeout 30;
Debian 会利用空闲内存做 cache/buffer:
free -h
如果:
buff/cache 很大
available 还很多
✅ 这是正常的,不是内存泄漏
常见“隐形内存杀手”:
redismemcachedfail2banclamavmonit✅ 查看:
systemctl list-units --type=service --state=running
# 总览
free -h
top
htop
# 按内存排序
ps aux --sort=-%mem | head
# 查看 swap
swapon --show
innodb_buffer_pool_size = 256M
max_connections = 80
pm.max_children = 8~12
worker_processes auto;
fallocate -l 1G /swapfile
mkswap /swapfile
swapon /swapfile
Debian LNMP 内存高,90% 是 MySQL + PHP-FPM 配置不合理,不是系统问题。
如果你愿意,可以把下面信息发我,我可以帮你精确调优:
free -h)my.cnfwww.conf(PHP-FPM)