ubuntu

如何优化Ubuntu上Nginx的内存使用

小樊
33
2025-09-01 08:12:35
栏目: 智能运维

优化Ubuntu上Nginx内存使用可从配置、内核参数、缓存及监控等方面入手,具体如下:

  1. 调整Nginx配置
    • 优化工作进程:设置worker_processes auto;(自动匹配CPU核心数),避免过多进程占用内存。
    • 限制连接数与缓冲区
      • worker_connections根据系统资源调整(如1024-4096),避免单个进程连接数过高。
      • 减小client_body_buffer_size(如8k)、proxy_buffer_size(如4k),降低请求体缓存占用。
    • 启用高效模式:使用epoll事件模型(events { use epoll; }),提升高并发下的内存效率。
  2. 优化内核参数
    • 修改/etc/sysctl.conf
      • vm.swappiness=10(减少交换分区使用,优先回收内存)。
      • net.ipv4.tcp_tw_reuse=1(重用TIME_WAIT连接,降低内存占用)。
    • 执行sudo sysctl -p使配置生效。
  3. 启用缓存机制
    • 静态资源缓存:通过sendfile on;tcp_nopush on;减少内存拷贝,配合expires指令缓存文件。
    • 代理/SSL缓存:合理配置proxy_cache_pathssl_session_cache,限制缓存大小及超时时间。
  4. 限制长连接与超时
    • 缩短keepalive_timeout(如30秒),减少空闲连接占用内存。
    • 设置keepalive_requests(如100),强制关闭超量请求的长连接。
  5. 监控与维护
    • 使用tophtopnginx -s status监控内存占用,定位异常进程。
    • 定期重启Nginx释放内存(可通过cron定时执行nginx -s reload)。
  6. 其他优化
    • 禁用不必要的模块(如第三方模块),避免内存泄漏。
    • 升级Nginx到最新稳定版,修复已知内存问题。

参考来源

0
看了该问题的人还看了