温馨提示×

怎么优化linux lnmp

小樊
40
2026-10-21 05:44:08
栏目: 智能运维

“优化 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)”一般从系统层、Nginx、PHP、MySQL、缓存、安全与监控几个维度来做。下面给你一套实用、可落地的优化清单,适合中小型网站到高并发场景。


一、Linux 系统层优化

1. 文件描述符限制

ulimit -n 65535

永久生效:

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

2. 内核参数优化(/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
vm.swappiness = 10
sysctl -p

3. 禁用或限制 swap(视内存而定)

swapoff -a

或降低 swappiness


二、Nginx 优化(重点)

1. worker 进程

worker_processes auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 10240;
    use epoll;
}

2. 开启 Gzip

gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
gzip_types text/css application/javascript application/json image/svg+xml;

3. 静态资源缓存

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

4. 开启 keepalive

keepalive_timeout 65;
keepalive_requests 1000;

5. 使用 fastcgi 缓存(PHP 站点神器)

fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=phpcache:100m inactive=60m;

三、PHP 优化(PHP-FPM)

1. php-fpm 进程模型

pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

2. 关闭无用功能

expose_php = Off
display_errors = Off

3. OPcache(必开)

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

四、MySQL / MariaDB 优化

1. 基础参数(示例 4G 内存)

innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
max_connections = 500
query_cache_type = 0

2. 慢查询日志

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

3. 定期优化表

OPTIMIZE TABLE table_name;

五、缓存层优化(强烈推荐)

1. Redis

  • 页面缓存
  • Session 存储
  • 热点数据
maxmemory 1gb
maxmemory-policy allkeys-lru

2. CDN

  • 静态资源走 CDN
  • 减少源站压力

六、安全 & 稳定性

  • 防火墙(iptables / nftables / ufw)
  • 限制 PHP 执行目录
  • 禁用危险函数
disable_functions = exec,passthru,shell_exec,system

七、监控 & 排查工具

  • htop
  • iotop
  • netstat -anp | grep :80
  • mysqltuner
  • nginx -t
  • php-fpm -t

八、常见性能瓶颈速查

现象 可能原因
CPU 高 PHP 慢 / 没开 OPcache
内存爆 MySQL buffer 太大
并发上不去 fd / worker 不够
响应慢 没缓存 / SQL 慢

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

  • 服务器配置(CPU / 内存)
  • 网站类型(WordPress / 自研 / API)
  • 当前并发量

我可以帮你直接给一套定制化的 LNMP 配置。

0 踩