硬件是LNMP架构的基石,需根据业务规模选择合适的配置:
操作系统配置直接影响资源利用率,需重点调整以下参数:
numactl命令关闭);noatime选项(减少文件访问时间记录);/etc/sysctl.conf优化TCP/IP栈与内存管理,关键参数包括:
vm.swappiness=10(降低swap使用率,优先使用物理内存);vm.dirty_background_ratio=10、vm.dirty_ratio=20(控制脏页刷新阈值,平衡写入性能与数据安全性);net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30(复用TIME_WAIT连接,减少连接建立开销)。Nginx作为前端Web服务器,需聚焦并发处理与响应效率:
worker_processes auto;(自动匹配CPU核心数);worker_connections 1024;(每个进程最大并发连接数,可根据内存调整至2048或更高);gzip on;(压缩响应内容,建议开启gzip_types text/plain text/css application/json application/javascript;,压缩率可达50%-70%);配置静态资源缓存(如location ~* \.(jpg|jpeg|png|gif)$ { expires 30d; add_header Cache-Control "public"; }),降低回源请求次数;location指令匹配),避免转发至PHP-FPM,减少资源消耗;keepalive_timeout 65; keepalive_requests 100000;(保持连接复用,减少TCP握手开销)。数据库是性能瓶颈的高发区,需重点优化缓冲池与查询效率:
innodb_buffer_pool_size为服务器总内存的50%-80%(如16GB内存可设置为8GB-12GB),用于缓存数据与索引,减少磁盘I/O;max_connections为预期并发连接数的1.2-1.5倍(如预计1000并发,设置为1200-1500),避免连接过多导致资源耗尽;优化SQL语句(避免SELECT *、使用索引、用EXPLAIN分析查询),减少全表扫描;slow_query_log=1,设置long_query_time=2(记录执行时间超过2秒的查询),定期分析并优化慢查询;log-bin=mysql-bin、server-id=1),分担读请求(将读操作指向从库),提升整体吞吐量。PHP作为动态脚本语言,需通过缓存与进程管理提升执行效率:
php.ini中添加zend_extension=opcache.so,并设置opcache.enable=1、opcache.memory_consumption=128(缓存内存大小)、opcache.max_accelerated_files=4000(缓存的文件数量)、opcache.jit=on(启用JIT编译,进一步提升性能),缓存预编译的PHP字节码,减少代码解析和编译开销;pm.max_children(最大子进程数,如pm.max_children = (总内存 - MySQL内存) / 单个PHP进程内存)、pm.start_servers(启动时的子进程数)、pm.min_spare_servers(最小空闲进程数)、pm.max_spare_servers(最大空闲进程数),平衡进程数量与资源消耗;ulimit -n 65535提高系统文件描述符限制(默认值较低,无法满足高并发需求),并在/etc/security/limits.conf中永久设置(如* soft nofile 65535、* hard nofile 65535);vm.swappiness(如设置为10)、vm.dirty_background_ratio(如设置为10)、vm.dirty_ratio(如设置为20),优化内存与磁盘的IO负载;net.core.somaxconn=65535(监听队列长度,避免连接被拒绝)、net.ipv4.tcp_max_syn_backlog=65535(SYN队列长度,应对高并发连接请求)、net.ipv4.tcp_fastopen=3(启用TCP Fast Open,减少握手延迟)。ab)、wrk等工具进行压力测试(如ab -n 1000 -c 100 http://your_server_ip/),模拟高并发场景,验证优化效果并指导进一步调整;mysqldump)和重要文件(如网站数据),防止数据丢失;可使用增量备份(如xtrabackup)减少备份时间。