Worker进程是Nginx处理请求的核心,合理的进程数和连接数设置能有效平衡资源占用与并发能力。
grep processor /proc/cpuinfo | wc -l查看),或使用auto让Nginx自动匹配核心数,避免过多进程导致CPU争抢。0001 0010 0100 1000),减少进程在不同核心间切换的开销,提升CPU缓存命中率。events块中设置每个Worker的最大并发连接数(建议1024-65536,根据系统资源调整),需配合worker_rlimit_nofile(所有Worker能打开的文件数上限,需≥worker_connections)使用。选择高效的事件模型并调整相关参数,提升并发处理效率。
events块中启用epoll(Linux 2.6+内核推荐),相比select/poll,epoll采用事件回调机制,能高效处理大量并发连接。on(默认值),避免“惊群效应”——新请求到来时,仅唤醒一个Worker进程处理,减少不必要的进程唤醒开销。on,允许单个Worker进程同时接受多个新连接,提升连接处理效率。合理配置缓冲区,避免内存浪费或溢出。
client_body_buffer_size(默认8k/16k,建议8k-32k)、client_header_buffer_size(默认1k,建议1k-4k)、large_client_header_buffers(默认4×8k,建议4×8k-8×16k),适配请求大小,减少内存碎片。proxy_buffer_size(默认8k,建议4k-16k)、proxy_buffers(默认8×内存页大小,建议8×16k)、proxy_busy_buffers_size(默认32k,建议32k-64k),优化代理请求的内存使用。ssl_buffer_size从默认16k调整为8k,减少SSL握手时的内存开销。减少数据传输量和磁盘IO,间接降低内存占用。
http块中启用gzip on,设置gzip_min_length 1k(仅压缩≥1k的文件)、gzip_comp_level 5(压缩比1-9,5为平衡值)、gzip_types(指定压缩类型,如text/css、application/javascript),减少传输数据量。open_file_cache指令缓存文件描述符(max=10000,缓存1万个文件)、inactive=60s(非活动60秒后失效)、valid=60s(每60秒验证缓存有效性),减少磁盘IO次数。减少长连接占用内存,提升连接复用率。
keepalive_timeout 30s),缩短空闲连接的保持时间,释放内存。keepalive_requests 500,默认100),超过后强制关闭连接,避免单个连接占用内存过久。调整内核参数,提升Nginx的内存管理与网络性能。
/etc/sysctl.conf中设置net.ipv4.tcp_tw_reuse = 1(重用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout = 30(缩短FIN超时时间至30秒)、net.core.somaxconn = 4096(增加监听队列长度),减少TCP连接的内存占用。vm.swappiness = 10(默认60),降低系统使用Swap分区的倾向,优先回收内存,提升Nginx的内存访问效率。减少日志对内存的占用,并通过监控及时发现问题。
http块中设置access_log的buffer=32k(缓冲32k数据)、flush=30s(30秒刷新一次),减少频繁的磁盘写入操作。server块中设置server_tokens off,不对外暴露Nginx版本,避免针对性攻击,间接提升系统稳定性。htop(查看内存/CPU使用)、nginx -t(测试配置合法性)、valgrind(检测内存泄漏)等工具,定期监控Nginx的资源占用情况,及时调整配置。保持系统与Nginx的最新状态,修复已知问题。
rm -rf /var/cache/nginx/*)和日志文件(rm -f /var/log/nginx/*.log),避免磁盘空间耗尽导致内存交换。apt update && apt upgrade nginx升级到最新稳定版,获取性能改进和安全修复,提升内存管理的效率。