优化 Debian 下的 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 性能,一般从 系统层、Nginx、PHP-FPM、数据库、系统资源与监控 几个层面来优化。下面给你一套实用、可落地的优化方案(按重要性排序)。
一、系统层面优化(基础)
1. 升级系统 & 内核
apt update && apt upgrade -y
Debian 新版本 + 新内核通常性能更好,支持更好的 TCP / IO 调度。
2. 调整文件描述符限制
查看当前:
ulimit -n
修改(永久):
vi /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
或修改 systemd 服务:
vi /etc/systemd/system.conf
DefaultLimitNOFILE=65535
3. 内核参数优化(网络 & IO)
vi /etc/sysctl.conf
常用优化:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10
vm.dirty_ratio = 10
应用:
sysctl -p
二、Nginx 性能优化(重点)
1. worker 进程优化
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
use epoll;
multi_accept on;
}
2. 连接 & 缓冲区优化
keepalive_timeout 65;
keepalive_requests 10000;
client_max_body_size 50m;
client_body_buffer_size 128k;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
3. 开启 Gzip
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_types text/css application/javascript application/json text/xml text/plain;
4. 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
access_log off;
}
三、PHP-FPM 优化(关键)
1. 进程模式推荐
一般推荐使用 dynamic 或 ondemand(低内存)
编辑:
vi /etc/php/8.x/fpm/pool.d/www.conf
推荐配置(以 2C4G 为例):
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 1000
如果是高并发网站:
pm = static
pm.max_children = 100
2. 调整 PHP 执行参数
vi /etc/php/8.x/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 120
opcache.enable=1
四、OPcache(强烈推荐)
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.jit_buffer_size=128M
重启:
systemctl restart php8.x-fpm
五、MySQL / MariaDB 优化
1. 基础配置文件
/etc/mysql/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf
4G 内存示例:
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
max_connections = 300
query_cache_type = 0
2. 禁用不必要的功能
- 关闭 query cache(MySQL 8+ 已移除)
- 禁用 DNS 反解析:
skip-name-resolve
六、缓存策略(性能飞跃)
1. Redis(首选)
apt install redis-server
PHP 使用:
- WordPress:Redis Object Cache
- Laravel:Redis Cache
2. Nginx FastCGI Cache(极高性能)
fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=phpcache:100m inactive=60m max_size=1g;
七、系统资源监控(必须)
1. 实时查看
htop
vmstat 1
iostat -x 1
2. 查看 Nginx / PHP 状态
nginx -t
systemctl status php8.x-fpm
八、常见性能瓶颈排查
| 现象 | 原因 | 优化 |
|---|---|---|
| CPU 高 | PHP 慢 | 开启 OPcache |
| 内存爆 | FPM 进程多 | 调整 pm |
| IO 高 | 数据库 | innodb_buffer_pool |
| 并发低 | 文件描述符 | 调大 |
九、推荐 LNMP 优化优先级(实战)
✅ OPcache + PHP-FPM 优化
✅ Nginx worker & keepalive
✅ MySQL innodb_buffer_pool
✅ 系统 ulimit + sysctl
✅ Redis / FastCGI Cache
如果你愿意,可以告诉我:
- 服务器配置(CPU / 内存 / 带宽)
- 用途(WordPress / Laravel / API / 高并发)
- MySQL 还是 MariaDB
- 访问量级(日 IP)
我可以直接给你一套 定制参数配置,而不是通用方案。
