温馨提示×

Debian如何提升LNMP响应速度

小樊
39
2025-12-08 20:44:01
栏目: 智能运维

Debian 上提升 LNMP 响应速度的系统化做法

一 基线检查与快速收益

  • 保持系统与软件为最新稳定版,及时获得性能修复与安全改进。
  • 启用 HTTP/2 提升多路复用与头部压缩效率:
    • 示例:listen 443 ssl http2; 并正确配置 ssl_certificate/ssl_certificate_key。
  • 开启 Gzip 压缩以减小传输体积(适合文本类资源):
    • 示例:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  • 为静态资源设置长期缓存,减少重复请求:
    • 示例:location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control “public, no-transform”; }
  • 使用 CDN 分发静态资源与可缓存内容,降低源站压力与时延。

二 Nginx 关键优化

  • 进程与连接:
    • worker_processes auto; worker_cpu_affinity auto; worker_rlimit_nofile 65535;
    • 开启 sendfile on; 提升静态文件传输效率;
    • 开启 tcp_nodelay on; 降低 Nagle 延迟;
    • 复用连接:keepalive_timeout 65; keepalive_requests 100000;
    • 安全与开销:关闭 server_tokens; 按需调整 error_log 级别以减少 I/O。
  • 内容加速:
    • 启用 Gzip(见上);
    • 启用 proxy_cache / fastcgi_cache 做页面/后端与动态内容缓存:
      • 示例:
        • proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
        • proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
    • 静态资源长缓存(见上)。

三 PHP 与 PHP-FPM 优化

  • 启用并调优 OPcache(建议值,按内存与应用调整):
    • opcache.enable=1
    • opcache.memory_consumption=128–256
    • opcache.interned_strings_buffer=8–64
    • opcache.max_accelerated_files=4000–10000
    • opcache.revalidate_freq=60(开发环境可设为 0 便于调试)
    • opcache.save_comments=1
    • opcache.jit=on; opcache.jit_buffer_size=128M
  • PHP-FPM 进程管理(以 pm=dynamic 为例):
    • 依据内存与单进程占用估算 pm.max_children;
    • 设定 pm.start_servers、pm.min_spare_servers、pm.max_spare_servers(如 max_spare ≈ 0.75 × max_children);
    • 设置 pm.max_requests(如 500–1000)以回收潜在内存泄漏进程;
    • 调整 PHP.ini 关键项:memory_limit、max_execution_time 等。

四 MySQL MariaDB 优化

  • InnoDB 缓冲池:将 innodb_buffer_pool_size 设为总内存的50%–80%(数据库专用机可趋近上限)。
  • 连接与超时:根据业务峰值设置 max_connections,并优化交互与连接回收相关参数。
  • 查询与索引:开启并定期分析慢查询日志,建立合适索引、优化 SQL;
  • 缓存策略:在 MySQL 5.7 及更早版本可启用查询缓存(query_cache_type=1, query_cache_size 适度);在 MySQL 8.0+ 查询缓存已移除,建议以应用层缓存(如 Redis/Memcached)替代。

五 Linux 系统与网络调优及压测闭环

  • 文件描述符与进程限制:
    • 提升进程可打开文件数:ulimit -n 65535;在 systemd 服务单元中设置 LimitNOFILE=65535
  • 内核网络参数(/etc/sysctl.conf 或 sysctl -w 临时生效):
    • net.core.somaxconn=65535
    • net.ipv4.ip_local_port_range=“1024 65535
    • net.ipv4.tcp_fin_timeout=30
    • net.ipv4.tcp_slow_start_after_idle=0
    • net.ipv4.tcp_fastopen=3
    • net.ipv4.tcp_syncookies=1
    • net.core.netdev_max_backlog=65535
    • 如启用防火墙/连接跟踪:net.netfilter.nf_conntrack_max=2097152;可按需缩短 fin_wait/time_wait 等超时
  • 监控与验证:
    • 使用 Prometheus + Grafana 监控 Nginx、PHP-FPM、MySQL 与系统资源;
    • 使用 ab 进行基线压测并对比优化前后:ab -n 1000 -c 100 http://your_server_ip/;
    • 每次变更遵循“备份—小步变更—压测—回滚预案”的闭环。

0