温馨提示×

debian lnmp怎么调优

小樊
50
2026-07-30 08:25:26
栏目: 智能运维

在 Debian 上部署 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 后,调优通常从 系统层 → Nginx → PHP → MySQL/MariaDB → 应用层 逐层进行。下面给你一套实战型调优清单,适合中小到中型站点,高并发场景可再细化。


一、系统层调优(Linux / Debian)

1. 文件描述符限制

ulimit -n

建议至少 65535

永久生效:

vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. 内核参数优化

vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog = 65535
vm.swappiness = 10

生效:

sysctl -p

二、Nginx 调优

1. worker 进程

worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;

2. events 优化

events {
    worker_connections 10240;
    use epoll;
    multi_accept on;
}

3. HTTP 核心参数

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;
    keepalive_requests 1000;

    client_max_body_size 50m;

    gzip on;
    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_types text/css application/javascript application/json;
}

4. 静态资源缓存

location ~* \.(js|css|png|jpg|gif|ico|svg|woff2)$ {
    expires 30d;
    access_log off;
}

三、PHP 调优(PHP-FPM)

1. PHP-FPM 进程管理(重点)

编辑:

vim /etc/php/*/fpm/pool.d/www.conf

动态模式(推荐)

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

高并发可选 static

pm = static
pm.max_children = 100

⚠️ 每个 PHP 进程约 30~80MB,别设太大


2. PHP 基础优化

memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 50M
post_max_size = 50M
session.gc_probability = 1

3. OPcache(强烈建议)

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0

四、MySQL / MariaDB 调优

1. 基础配置(my.cnf)

[mysqld]
innodb_buffer_pool_size = 1G        # 物理内存的 50%~70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

max_connections = 300
table_open_cache = 2000
query_cache_type = 0

2. 慢查询日志

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

3. 查看运行状态

SHOW STATUS;
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW PROCESSLIST;

五、LNMP 架构级优化建议

✅ 使用 Unix Socket(比 TCP 快)

Nginx → PHP-FPM

fastcgi_pass unix:/run/php/php-fpm.sock;

PHP-FPM:

listen = /run/php/php-fpm.sock

✅ 静态资源不走 PHP

location / {
    try_files $uri $uri/ /index.php?$args;
}

✅ HTTPS + HTTP/2

listen 443 ssl http2;

六、缓存体系(进阶)

场景 方案
页面缓存 Nginx FastCGI Cache
数据缓存 Redis
对象缓存 Memcached
CDN Cloudflare / 自建

七、常用性能检测工具

top / htop
vmstat 1
iostat -x 1
ss -antp
netstat -an | grep TIME_WAIT

八、推荐调优顺序(经验)

  1. 系统参数
  2. Nginx(并发 + 缓存)
  3. PHP-FPM(进程模型)
  4. OPcache
  5. MySQL(InnoDB)
  6. 应用缓存(Redis)

如果你愿意,可以告诉我:

  • 服务器配置(CPU / 内存 / 磁盘)
  • 网站类型(WordPress / Laravel / API / 商城)
  • 并发量(日 PV / 同时在线)

我可以直接给你一套 “可复制粘贴”的 LNMP 配置文件

0