优化Ubuntu上Nginx内存使用可从配置、内核参数、缓存及监控等方面入手,具体如下:
worker_processes auto;
(自动匹配CPU核心数),避免过多进程占用内存。worker_connections
根据系统资源调整(如1024-4096),避免单个进程连接数过高。client_body_buffer_size
(如8k)、proxy_buffer_size
(如4k),降低请求体缓存占用。epoll
事件模型(events { use epoll; }
),提升高并发下的内存效率。/etc/sysctl.conf
:
vm.swappiness=10
(减少交换分区使用,优先回收内存)。net.ipv4.tcp_tw_reuse=1
(重用TIME_WAIT连接,降低内存占用)。sudo sysctl -p
使配置生效。sendfile on;
和tcp_nopush on;
减少内存拷贝,配合expires
指令缓存文件。proxy_cache_path
和ssl_session_cache
,限制缓存大小及超时时间。keepalive_timeout
(如30秒),减少空闲连接占用内存。keepalive_requests
(如100),强制关闭超量请求的长连接。top
、htop
或nginx -s status
监控内存占用,定位异常进程。cron
定时执行nginx -s reload
)。参考来源: