工作进程是Nginx处理请求的核心单元,合理配置可最大化利用CPU资源。
grep processor /proc/cpuinfo | wc -l查看),或设置为auto让Nginx自动匹配核心数。0001 0010 0100 1000),减少进程在核心间迁移的开销,提升缓存利用率。ulimit -n一致的值(如65535),确保每个工作进程能打开足够多的文件描述符,避免高并发时连接被拒绝。Nginx采用事件驱动架构,需配置高效的事件模型以处理高并发。
epoll(而非select/poll),其基于事件回调机制,能高效处理大量并发连接。65535(需与worker_rlimit_nofile匹配)。通过零拷贝技术和TCP优化,减少数据传输延迟。
sendfile使用,在发送数据时填充TCP包至最大容量(MSS),减少网络报文数量,降低网络负载。减少传输数据量,加快页面加载速度(尤其对文本类资源)。
text/plain、text/css、application/javascript、application/json等)。通过缓存减少重复计算和请求,降低服务器负载。
expires和Cache-Control头设置浏览器缓存时间(如静态资源设置expires 30d;),减少对服务器的重复请求。proxy_cache指令缓存后端响应(如proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;),并设置proxy_cache_valid 200 302 10m;控制缓存有效期。合理设置缓冲区,避免频繁的磁盘I/O操作。
10K),若请求体超过缓冲区大小,Nginx会将数据写入临时文件,增加I/O开销。1k),适配大多数请求头的大小。8m),超过此值将返回413错误(需根据业务需求调整,如上传大文件的场景需增大该值)。4 4k),处理超过client_header_buffer_size的请求头。调整系统内核参数,提升Nginx的网络和文件处理能力。
编辑/etc/sysctl.conf文件,添加或修改以下参数:
sudo sysctl -p使参数生效。通过分发请求到多个后端服务器,提升整体处理能力。
使用upstream指令定义后端服务器组,例如:
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
# 负载均衡策略:轮询(默认)、IP哈希(ip_hash)、最少连接(least_conn)
least_conn;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
常用策略:
定期监控系统性能,定位瓶颈。
top、htop查看CPU和内存使用情况;vmstat监控系统整体性能(如上下文切换、I/O等待);nginx -t测试配置文件语法;nginx -s reload重新加载配置(无需重启服务)。access.log(记录请求详情)和error.log(记录错误信息),识别高频错误(如404、500)或慢请求(可通过$request_time字段分析)。apt update && apt upgrade nginx升级到最新稳定版本,获取性能改进和安全修复。client_max_body_size限制上传文件大小,防止恶意用户上传超大文件耗尽服务器资源。http_gzip_static_module用于静态GZIP压缩),减少资源占用。