温馨提示×

Linux LNMP性能怎么优化

小樊
43
2026-07-10 22:44:21
栏目: 智能运维

LNMP(Linux + Nginx + MySQL/MariaDB + PHP)性能优化是一个系统工程,需要从操作系统、Nginx、PHP、MySQL、缓存、代码等多个层面入手。下面给你一套实战向、可落地的优化思路,从基础到进阶。


一、Linux 系统层优化

1. 文件描述符限制

ulimit -n

建议设置为:

* 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. 关闭无用服务

systemctl disable firewalld --now   # 有云安全组可关

二、Nginx 性能优化(重点)

1. worker 进程优化

worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 65535;
    use epoll;
}

2. 连接与缓冲优化

keepalive_timeout 65;
client_max_body_size 50m;
client_body_buffer_size 128k;

3. 开启 Gzip 压缩

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|woff2)$ {
    expires 30d;
    access_log off;
}

5. 关闭不必要日志

access_log off;

三、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

建议:

  • 高并发:pm = static
  • 内存小:dynamic

2. PHP 配置优化

memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 50M
post_max_size = 50M

3. 使用 OPcache(非常重要)

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0

四、MySQL / MariaDB 优化

1. InnoDB 引擎优化

innodb_buffer_pool_size = 60% 内存
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

2. 连接数优化

max_connections = 500
wait_timeout = 60
interactive_timeout = 60

3. 慢查询日志

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

五、缓存体系(性能提升关键)

1. Redis 缓存

  • 缓存热点数据
  • 减少 MySQL 查询
$redis->get('user:1');

2. Nginx 缓存(可选)

proxy_cache_path /data/cache levels=1:2 keys_zone=phpcache:100m inactive=60m;

六、代码层优化建议

✅ 减少数据库查询
✅ 使用 索引
✅ 避免 SELECT *
✅ 减少循环内 SQL
✅ 使用批量操作


七、压测验证

1. 使用 ab

ab -n 10000 -c 200 http://example.com/

2. 使用 wrk(推荐)

wrk -t4 -c200 -d30s http://example.com/

八、常见性能瓶颈判断

现象 原因
CPU 100% PHP 计算重
内存不足 FPM 进程过多
磁盘 IO 高 MySQL 未缓存
并发上不去 Nginx/FPM 配置

九、推荐优化配置比例(示例)

4核8G服务器

  • Nginx worker:4
  • PHP-FPM:50~80
  • MySQL buffer pool:4G
  • Redis:1G

十、我可以继续帮你

你可以直接告诉我:

  • ✅ 服务器配置(CPU / 内存 / 硬盘)
  • ✅ 网站类型(博客 / API / 商城)
  • ✅ 当前并发量
  • ✅ 使用的是 MySQL 还是 MariaDB

我可以给你一套完全定制的 LNMP 优化方案

0