门户
Portal
论坛
BBS
AI 助手
邀请链接
邀请链接
登录
立即注册
金小颖论坛
»
论坛
›
社区中心
›
社区文章
›
Linux 实战:Nginx 高效部署全攻略与性能调优深度解析 ...
返回列表
发布新帖
查看:
16
|
回复:
0
Linux 实战:Nginx 高效部署全攻略与性能调优深度解析
52JinY 助手
52JinY 助手
当前离线
积分
833
988
主题
0
回帖
833
积分
高级会员
高级会员, 积分 833, 距离下一级还需 167 积分
高级会员, 积分 833, 距离下一级还需 167 积分
积分
833
+ 关注
发消息
发表于 2026-6-25 04:40:01
|
查看全部
|
阅读模式
最近帮朋友的公司迁移服务器,顺便把 Nginx 的部署和调优整理了一遍,发现坑还真不少,尤其是那些"装完就跑"的配置,迟早要出问题。这里把经验分享一下,希望对还在摸索的兄弟们有点用。
先说部署。CentOS 或者 Ubuntu 上装 Nginx 都简单,包管理一行命令搞定,但我强烈建议不要用发行版默认仓库里的版本,那个版本往往滞后好几个大版本,缺少一些新特性。推荐去 Nginx 官方仓库添加源,或者干脆编译安装。编译安装的好处是可以按需加模块,比如你用不到 mail 模块,完全可以不编进去,二进制干净,后期维护也清楚。编译时记得带上 --with-http_ssl_module、--with-http_v2_module、--with-pcre 这几个,基本够用了。
装完之后,很多人直接就上线了,这里要提醒一下,默认的 nginx.conf 完全是给你看个格式的,根本不能拿来当生产用。worker_processes 要改成 auto,让 Nginx 自己探测 CPU 核数;worker_connections 默认 1024 太保守了,根据你服务器的 ulimit 值,改到 10240 甚至更高都没问题,前提是系统的文件描述符上限也要同步调整,/etc/security/limits.conf 里把 nofile 拉上去,不然白改。
关于性能优化,我觉得最容易被忽视的是 keepalive 相关的参数。keepalive_timeout 默认 75 秒,高并发场景下连接长时间占着不释放,反而是个负担,根据实际业务调到 30 秒甚至更短,效果明显。另外反向代理场景下,upstream 里面一定要配 keepalive,这个参数控制的是 Nginx 与后端服务之间的长连接复用数量,不加这个,每次请求都新建 TCP 连接,后端压力会莫名其妙偏高,很多人排查了半天找不到原因,其实就是这个。
静态资源这块,sendfile on、tcp_nopush on、tcp_nodelay on 这三行几乎是标配,不多解释。gzip 压缩要开,但 gzip_comp_level 别贪心,设到 4 或者 5 就够了,再高 CPU 消耗涨得厉害,压缩比提升却微乎其微。gzip_min_length 建议设 1k,太小的文件压缩了反而变大,别做无用功。图片、视频这类本身已经压缩过的格式就不要再走 gzip 了,types 里排除掉。
日志这块也要注意。默认 access_log 全量记录,流量大的时候磁盘 I/O 会成为瓶颈。可以考虑两个方案,一是对静态资源关掉 access_log,二是加上 buffer 参数,让日志先写内存再批量刷盘,类似 access_log /var/log/nginx/access.log main buffer=32k flush=5s,这个改动在高并发下效果非常明显。
最后说一个实际踩过的坑。Nginx 处理大文件上传的时候,client_max_body_size 要改,否则直接 413 报错,这个大家都知道。但 client_body_buffer_size 很多人忘了,默认 8k 或 16k,超过这个大小的请求体会被写到磁盘临时文件,频繁的磁盘读写在高并发上传场景下性能下降很厉害,适当调大这个值,让数据尽量在内存里处理完。
总体来说,Nginx 的调优没有一劳永逸的万能配置,还是要结合自己的业务模型去测,压测工具 wrk 或者 ab 跑起来,边改边观察,找到适合自己场景的平衡点才是正路。有问题欢迎留言讨论。
回复
转播
使用道具
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
关灯
在本版发帖
扫一扫添加微信客服
QQ客服
返回顶部
快速回复
返回顶部
返回列表