Nginx是一款高性能的Web服务器和反向代理服务器,优化Nginx在Linux服务器上的性能可以显著提升服务器的处理能力和响应速度。以下是一些常见的Nginx优化技巧:
设置worker_processes:根据服务器的实际CPU核心数来设置工作进程的数量。通常设置为等于可用的物理CPU核心数可以充分利用多核优势。
worker_processes auto; # 或者明确指定核心数,如 worker_processes 4;
配置worker_connections:设置每个工作进程能够同时处理的最大连接数。
events { worker_connections 1024; # 根据服务器资源适当调整 }
启用高效的事件模型:确保选择了正确的事件模型,如epoll(对于Linux)、kqueue(对于BSD类系统)。
events { use epoll; }
启用sendfile:使用sendfile可以减少数据在内核空间和用户空间之间的复制操作,提高文件传输效率。
http { sendfile on; }
启用Gzip压缩:开启gzip压缩以减小响应数据大小,加快网络传输速度。
http { gzip on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; }
缓存优化:对静态资源启用缓存,例如通过proxy_cache或fastcgi_cache等模块设置缓存策略。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
TCP参数优化:调整Linux内核的相关TCP参数以优化网络性能,比如net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout等。
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=30
CPU亲和性:如条件允许,可以考虑设置worker进程与特定CPU核心绑定以提高缓存命中率。
worker_cpu_affinity 01 10; # 对于双核CPU,将两个worker分别绑定到不同的核心
负载均衡:如果有多台服务器,利用Nginx作为反向代理实现负载均衡,分摊请求压力。
upstream backend { server backend1.example.com; server backend2.example.com; }
在进行任何优化前,务必备份原有配置,并根据实际负载情况进行性能测试,以确保改动达到预期效果且不引入新的问题。