12人参与 • 2026-08-02 • Mysql
当业务流量开始增长,你的第一反应可能是“加机器”,进行水平扩展。但在很多场景下,垂直扩容(vertical scaling)是更优解:
垂直扩容的核心思想:不改变现有架构,仅通过升级硬件和深度优化软件/系统配置,将单台 nginx 服务器的性能压榨到物理极限。
💡 核心价值:
掌握 nginx 单机垂直扩容,是应对流量初期增长、控制成本、快速解决问题的最高效手段!
nginx 采用事件驱动、异步非阻塞架构,理论上单机可支撑数万甚至十万级并发。但实际性能往往被以下六个环节所限制:
垂直扩容就是逐一打破这六道枷锁。
这是性能提升的基石,优先级最高。
编辑 /etc/sysctl.conf 文件,应用以下关键参数:
# 增加系统全局最大文件句柄数 fs.file-max = 1000000 # 增加端口范围,避免 time_wait 耗尽端口 net.ipv4.ip_local_port_range = 1024 65535 # 重用和回收 time_wait 状态的连接 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 # 增加 tcp 缓冲区大小 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # 增加网络设备接收队列长度 net.core.netdev_max_backlog = 5000 # 启用 tcp fast open (tfo) net.ipv4.tcp_fastopen = 3
应用配置:
sudo sysctl -p
编辑 /etc/security/limits.conf,解除对 nginx 进程的限制:
# 假设 nginx 以 'nginx' 用户运行 nginx soft nofile 65536 nginx hard nofile 65536
或者,如果你使用 systemd 管理 nginx,创建一个覆盖文件 /etc/systemd/system/nginx.service.d/override.conf:
[service] limitnofile=65536
然后重载 systemd 并重启 nginx:
sudo systemctl daemon-reload sudo systemctl restart nginx
编辑 nginx.conf,进行精准调优:
# 1. 设置 worker 进程数为 cpu 核心数
worker_processes auto;
# 2. 允许 worker 进程继承监听 socket,提升性能
# 在较新版本中,这通常是默认行为
# listen 80 reuseport; # 如果内核支持,可在 listen 指令后加 reuseport
events {
# 3. 设置每个 worker 进程的最大连接数
worker_connections 65535;
# 4. 使用高效的事件驱动模型 (linux 下默认是 epoll)
use epoll;
# 5. 批量接受连接,减少系统调用
multi_accept on;
}
http {
# 6. 启用高效的 sendfile 系统调用来发送文件
sendfile on;
# 7. 启用 tcp_nopush 和 tcp_nodelay
tcp_nopush on; # 在 sendfile 时,尝试发送整个包
tcp_nodelay on; # 禁用 nagle 算法,降低小包延迟
# 8. 调整 keepalive 超时,复用连接
keepalive_timeout 65;
# 9. 启用 gzip 压缩,减小传输体积
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain application/json application/javascript text/css;
# ... 其他 server 配置
}reuseport: 在 linux 3.9+ 内核中,为每个 worker 进程创建独立的监听 socket,能显著提升多核 cpu 下的性能,避免惊群效应。
listen 443 ssl http2 reuseport;
优化不是一蹴而就的,必须通过监控来验证效果。
到此这篇关于nginx单机垂直扩容的实现示例的文章就介绍到这了,更多相关nginx单机垂直扩容内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论