Ubuntu下LNMP性能优化策略
worker_processes设置为CPU核心数(或auto,自动适配);worker_connections设置为1024及以上(每个worker的最大连接数);worker_rlimit_nofile设置为65535(单个进程能打开的最大文件描述符数,需同步修改系统限制)。events块中设置use epoll(Linux下高性能的事件驱动模型),并开启multi_accept on(一次接受多个连接,减少进程唤醒次数)。gzip on启用Gzip压缩(减少传输数据量,提升页面加载速度),配置expires 30d对静态文件(图片、CSS、JS)设置长期缓存(降低重复请求次数)。upstream模块将请求分发到多个后端Nginx实例,提升整体并发处理能力。innodb_buffer_pool_size设置为系统内存的50%-80%(InnoDB引擎的核心缓冲池,缓存数据和索引,减少磁盘I/O);key_buffer_size设置为256M-512M(MyISAM引擎的索引缓冲区,若使用InnoDB可适当减小)。max_connections根据并发用户数设置(如1000-2000),避免连接耗尽;innodb_log_file_size设置为256M-512M(重做日志大小,平衡性能与数据安全性),innodb_log_buffer_size设置为8M-64M(日志缓冲区,减少磁盘写入次数)。EXPLAIN分析慢查询(找出全表扫描、未使用索引等问题);为频繁查询的字段创建索引(如主键、外键、常用查询条件字段),避免过度索引(增加写操作负担);优化SQL语句(如用JOIN代替子查询、避免SELECT *、使用LIMIT限制结果集)。dynamic模式(根据负载动态调整进程数),设置pm.max_children为CPU核心数的2-4倍(如4核CPU设置为8-16,避免进程过多导致内存耗尽);pm.start_servers设置为max_children的1/4(启动时的初始进程数);pm.min_spare_servers和pm.max_spare_servers分别设置为max_children的1/4和1/2(保持空闲进程,应对突发请求);pm.max_requests_per_child设置为500-1000(每个子进程处理的最大请求数,防止内存泄漏)。opcache.enable=1(缓存PHP脚本编译后的字节码,减少重复编译时间);设置opcache.memory_consumption=128-256M(缓存大小,根据内存调整);opcache.max_accelerated_files=4000-10000(缓存的脚本文件数量,覆盖项目主要文件)。fastcgi_buffers(如4 256k,缓冲区数量与大小)和fastcgi_buffer_size(如128k,缓冲区大小),提升PHP脚本输出效率;设置fastcgi_read_timeout=300s(PHP脚本执行超时时间,避免长时间等待)。ulimit -n 65535提高单个用户的文件描述符限制(需同步修改/etc/security/limits.conf,设置* soft nofile 65535和* hard nofile 65535);修改/etc/sysctl.conf中的网络参数:net.core.somaxconn=65535(监听队列长度,避免连接被拒绝)、net.ipv4.tcp_tw_reuse=1(复用TIME_WAIT状态的连接,减少端口占用)、net.ipv4.tcp_fin_timeout=30(TIME_WAIT状态的超时时间,加快端口释放)、net.ipv4.tcp_fastopen=3(启用TCP快速打开,提升连接建立速度)。top、htop、vmstat、iostat等命令定期检查系统资源使用情况。access.log(查看热门页面、请求量、响应时间)和error.log(查看错误请求);分析MySQL的slow_query.log(找出慢查询),针对性优化。