Nginx 是一款高性能的 Web 服务器和反向代理服务器,它采用事件驱动架构,能够高效处理大量并发连接。以下是一些 Ubuntu 上 Nginx 性能优化的技巧:
Nginx 配置优化
- worker_processes:根据服务器的 CPU 核心数进行调整,通常设置为 CPU 核心数的 2 倍。例如,如果服务器有 8 个 CPU 核心,可以设置为 8 或 16。
- worker_connections:定义每个工作进程可以同时处理的最大连接数,增大该值有助于提升处理能力,通常设置为 1024 或更高。
- keepalive_timeout:设置 HTTP 长连接保持的时间,对于高并发场景,推荐设置较短的超时时间,比如 30 秒。
- client_max_body_size:限制客户端请求体的大小,避免大文件上传导致服务器资源耗尽。
- worker_rlimit_nofile:配置 Nginx 每个进程最大可打开的文件数,通常需要与操作系统的 ulimit 配置一致。
- cpu_affinity:配置 CPU 核心亲和力,确保特定的工作进程绑定到指定的 CPU 核心,以减少进程切换开销。
操作系统内核参数调整
- 文件描述符限制:提高系统允许的最大文件描述符数,使用
ulimit -n 65535
命令。
- TCP 连接队列长度:增加 TCP 连接队列长度,使用
echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
命令。
- TCP 连接重用:优化 TCP 连接重用,使用
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
命令。
- TCP 连接保持时间:调整 TCP 连接保持时间,使用
echo 30 > /proc/sys/net/ipv4/tcp_keepalive_time
命令。
缓存优化
- 使用 proxy_cache 或 fastcgi_cache:缓存后端响应,减少对数据库或应用服务器的请求。
- 静态文件缓存:对静态资源(如图片、CSS、JS 等)使用浏览器缓存,减少用户端重复请求的压力。
- 反向代理缓存:对动态内容(如 API 请求)使用反向代理缓存,缓存请求结果。
监控与调试
- stub_status 模块:使用
location /nginx_status { stub_status; allow 127.0.0.1; deny all; }
命令查看当前连接数和请求数。
- 实时监控:通过实时监控连接数和请求数,可以更好地了解服务器的负载情况。
通过上述优化技巧,可以显著提升 Nginx 在 Ubuntu 平台上的性能。在实施这些优化时,建议先在测试环境中验证效果,然后再应用到生产环境。