温馨提示×

centos nginx内存占用高怎么办

小樊
60
2025-08-08 13:31:19
栏目: 智能运维

一、优化Nginx配置

  • 调整进程与连接数
    • worker_processes auto;(按CPU核心数自动设置)。
    • worker_connections 1024;(单进程最大连接数,根据内存调整)。
  • 优化缓冲区
    • 减小 client_body_buffer_size(默认8k,可设为4k-16k)。
    • 限制 client_max_body_size(如10m,避免大文件占用内存)。
  • 启用高效传输
    • sendfile on; tcp_nopush on;(减少内存拷贝)。
  • 限制超时与长连接
    • keepalive_timeout 30s; keepalive_requests 100;

二、操作系统级优化

  • 调整内核参数
    • 编辑 /etc/sysctl.conf,添加:
      net.ipv4.tcp_tw_reuse = 1(重用TIME_WAIT连接)。
      vm.swappiness = 10(减少交换分区使用)。
    • 执行 sysctl -p 生效。
  • 清理缓存
    • 手动释放缓存:sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches

三、监控与维护

  • 定位内存占用
    • 使用 tophtop 查看内存占用高的进程,确认是否为Nginx。
    • 通过 pmap <nginx_pid> 分析Nginx进程内存分布。
  • 定期重启服务
    • 通过cron定时重启Nginx释放内存(如每天凌晨)。
  • 更新软件版本
    • 升级Nginx到最新稳定版,修复已知内存问题。

四、其他措施

  • 禁用不必要模块
    移除未使用的第三方模块,减少内存占用。
  • 启用静态文件缓存
    expires 指令缓存静态资源,减少后端请求。

参考来源


0