温馨提示×

Ubuntu Nginx资源占用高怎么办

小樊
58
2025-08-24 07:39:49
栏目: 智能运维

一、排查资源占用原因

  • 使用工具监控:通过tophtop查看CPU/内存占用,iftopnethogs监控网络流量,定位异常进程。
  • 检查Nginx日志:分析/var/log/nginx/error.logaccess.log,排查是否有异常请求或配置错误。

二、优化Nginx配置

  • 调整进程与连接数
    • 设置worker_processes auto;(自动匹配CPU核心数)。
    • 优化worker_connections(建议1024-4096,根据内存调整),在events模块中配置。
  • 启用高效传输模式
    • 启用keepalive减少连接开销,设置keepalive_timeout 30s;keepalive_requests 100;
    • 使用sendfile on;tcp_nopush on;减少内存拷贝。
  • 优化缓存策略
    • 为静态资源配置代理缓存或文件缓存,如proxy_cache_path指令。
    • 启用Gzip压缩减少传输数据量:gzip on; gzip_comp_level 6;
  • 限制资源消耗
    • 限制请求体大小:client_max_body_size 10m;
    • 禁用不必要的HTTP方法:if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; }

三、升级与维护

  • 升级Nginx版本:使用sudo apt update && sudo apt install nginx获取最新版,修复性能问题和漏洞。
  • 定期重启服务:通过cron定时执行nginx -s reload释放内存。

四、硬件与系统优化

  • 升级硬件:确保服务器有足够CPU、内存和SSD存储,提升I/O性能。
  • 调整系统内核参数:修改/etc/sysctl.conf,优化TCP连接复用和内存回收,如net.ipv4.tcp_tw_reuse = 1

五、安全与扩展

  • 禁用非必要模块:编译时通过--without-模块名移除不需要的模块(如http_autoindex)。
  • 使用CDN分担压力:将静态资源托管到CDN,减少Nginx负载。

操作前建议:备份配置文件,修改后使用nginx -t测试语法,再通过systemctl reload nginx重新加载配置。

0