插件窝 干货文章 LNMP如何提升速度

LNMP如何提升速度

优化 缓存 OPcache 使用 742    来源:    2025-05-04

LNMP环境速度优化方案

LNMP(Linux + Nginx + MySQL + PHP)是流行的Web服务架构,以下是一些提升LNMP环境速度的有效方法:

1. Nginx优化

配置优化

# 调整worker进程数(通常等于CPU核心数)
worker_processes auto;

# 每个worker的最大连接数
worker_connections 10240;

# 开启高效文件传输模式
sendfile on;

# 减少网络数据包数量
tcp_nopush on;
tcp_nodelay on;

# 保持连接超时时间
keepalive_timeout 65;

# 开启Gzip压缩
gzip on;
gzip_min_length 1k;
gzip_comp_level 2;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;

缓存设置

# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 365d;
    access_log off;
    add_header Cache-Control "public";
}

2. PHP优化

PHP-FPM配置

# 进程管理方式
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

# 每个进程最大请求数
pm.max_requests = 500

# 慢日志记录
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s

php.ini优化

# 禁用不必要模块
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru

# 内存限制
memory_limit = 128M

# 脚本执行时间
max_execution_time = 30

# 启用OPcache
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

3. MySQL优化

my.cnf配置

[mysqld]
# 缓冲池大小(建议为系统内存的50-70%)
innodb_buffer_pool_size = 2G

# 日志文件大小
innodb_log_file_size = 256M

# 连接数设置
max_connections = 200
wait_timeout = 300
interactive_timeout = 300

# 查询缓存(MySQL 8.0已移除)
# query_cache_size = 64M
# query_cache_limit = 2M

# 表缓存
table_open_cache = 2000

# 排序缓存
sort_buffer_size = 2M
join_buffer_size = 2M

数据库维护

  • 定期优化表:OPTIMIZE TABLE table_name;
  • 建立合适的索引
  • 避免使用SELECT *,只查询需要的字段

4. 系统级优化

Linux内核参数

# /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 65535

文件系统优化

  • 使用ext4或xfs文件系统
  • 添加noatime选项到挂载参数

5. 其他优化建议

  1. CDN加速:静态资源使用CDN分发
  2. HTTP/2:启用HTTP/2协议
  3. Redis缓存:使用Redis缓存数据库查询结果
  4. 页面静态化:将动态页面生成静态HTML
  5. 图片优化:使用WebP格式,压缩图片
  6. 前端优化:合并CSS/JS文件,使用雪碧图
  7. 监控工具:使用New Relic、Blackfire等分析性能瓶颈

6. 性能测试工具

  • ab (Apache Benchmark):ab -n 1000 -c 100 http://example.com/
  • wrk:更现代的HTTP基准测试工具
  • siege:支持多个并发用户的压力测试
  • MySQLTuner:MySQL性能调优脚本

通过以上优化措施,可以显著提升LNMP环境的性能和响应速度。建议每次修改配置后都进行测试,确保修改带来实际的性能提升。