Nginx大并发优化实战

摘要:
文章的知识点:【】调优的必要性【】调优维度和意见差异【】Nginx调优项目1.调优的必要,一直不愿意写优化内容分享,但我真的不知道如何访问它。因为如果我写不好,我会被各种各样的事情安慰。我今天终于写了这篇文章,因为有太多人亲自问我,或者在群里分享经验。在讨论调优之前,我们需要知道为什么要进行调优,以及业务操作和调优之间的关系。业务运营:线上业务正常运营,承载公司业务。监控业务

 

  文章知识点:

  [ ] 调优的必要性

  [ ] 调优的维度和见解分歧

  [ ] Nginx调优项

  一、调优的必要性

  ​ 一直不愿意写优化的内容出来分享,实在是不知道该如何取写。因为,写不好就会被各种慰问,今天终于还是写了,因为有太多人私信或在群里问我或者让给分享经验,我还是从了。

  ​ 在聊调优之前,我们先要知道为何调优,业务运行和调优的关系。

  业务运行:线上业务正常运行,承载了公司业务。

  监控业务:通过监控业务对线上业务进行监控,及时发现问题。

  优化业务:通过监控分析,发现业务问题或者瓶颈,及时对业务或者软件就行调整、优化。

  测试优化:优化完成后,需要对现有的优化进行测试,保证业务在当前优化模式中稳定、高效,能够解决当前问题。

  这就是业务运行的一个流程,也是我们保证业务稳定、高效、高可用的运维之道。

  二、调优的维度和见解分歧

  ​ 调优类的文章是最难写的,因为我只能告诉你调优的选项,无法告诉你具体的阈值,因为不同的业务运行在不同的机器,所消耗的资源是不同的;又因为场景不同,对应的调优项及阈值是千变万化的,就好比你和你上铺的兄弟都是感冒了,去医院看病开的药却是截然不同的。正是如此,才会出现当很多人看到调优的文章,看到了具体的调优项或者阈值就会浮现出两个字,我不好意思说,配个图吧!大家意会就好。

  三、Nginx调优

  nginx并发数

  nginx进程优化

  nginx压缩

  nginx本地缓存

  1、nginx并发数设置

  worker_processes 1;

  这是用来配置nginx启动几个工作进程的,默认为1。而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。我做了如下配置:

  events {

  worker_connections 1024;

  }

  2、nginx将进程绑定在固定核

  worker_cpu_affinity 0010 0100 1000;

  worker_processes 3;

  worker_cpu_affinity 0010 0100 1000;

  #这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。

  重启nginx后,3个工作进程就可以各自用各自的CPU了。

  ps -eo psr,pid,arg 查看

  nginx的并发=worker_processes*worker_connections

  3、nginx 压缩功能

  压缩功能对于WEB服务器来说太重要了,主要体现在以下两个方向:

  ​ 1)提升用户体验:传输数据变小,用户等待时间变短。

  ​ 2)节省公司带宽成本:压缩后传输,传输数据变小,带宽占用的更少。

  既然能给用户好的体验,又能给公司省钱。这么好的事情何乐不为呢,所以这个是工作中必备配置神器。

  但是配置压缩需要更大家说一下注意事项:

  ​ 1)图片、音视频不要压缩

  ​ 2)小于1K的不要压缩,否则越压越大

  ​ 3)压缩级别越大,就越消耗CPU

  未开启压缩

  开启压缩

  代码如下:

  gzip on;

  gzip_http_version 1.1;

  gzip_disable "MSIE [1-6].";

  gzip_proxied any;

  gzip_min_length 1024;

  gzip_buffers 4 8k;

  gzip_comp_level 3;

  gzip_types text/plain text/css application/x-javascript application/javascript application/xml;

  gzip on; (启用 gzip 压缩功能)

  gzip_http_version 1.1; 它的默认值是HTTP/1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩

  gzip_disable "MSIE [1-6].";设置是禁用IE1-6版本的gzip压缩

  gzip_proxied any; (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)

  gzip_min_length 1024; (最小压缩的页面,如果页面过于小,可能会越压越大,这里规定大于1K的页面才启用压缩)

  gzip_buffers 4 8k; (设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流 按照原始数据大小以8K为单位申请4倍内存空间)

  gzip_comp_level 3; (压缩级别,1压缩比最小处理速度最快,9压缩比最大但处理最慢,同时也最消耗CPU,一般设置为3就可以了)

  gzip_types text/plain text/css application/x-javascript application/javascript application/xml; (什么类型的页面或文档启用压缩)

  开启压缩验证 郑州男科医院:http://mobile.zztongjiyiyuan.com/郑州男科医院哪家好:http://mobile.zztongjiyiyuan.com/郑州做包皮手术多少钱:http://mobile.zztongjiyiyuan.com/

  4、nginx 本地缓存功能

  ​ 浏览器缓存(Browser Caching) 是为了加速浏览并节约网络资源,浏览器在用户磁盘上对最近请求过的文档进行存储。

  ​ 客户端缓存和压缩有本质的区别,用户第一次下载数据后会被保存在客户本地硬盘,下次在使用的时候,只要本地资源没有过期,就直接从本地硬盘读取了,速度最快,因为不用去找WEB服务器拿数据了。同样它优化了用户体验和节省了公司带宽成本

  需要注意的是:

  ​ 缓存一般缓存的是图片、网站框架、音视频等不常变化的数据。应用最好的就是百度首页,大家有没有发现有时候你没网都能打开百度首页啊,那就是看的你本地缓存。

  nginx本地缓存配置指令

  nginx可以通过 expires 指令来设置浏览器的Header

  语法: expires [time|epoch|max|off]

  默认值: expires off

  作用域: http, server, location

  使用本指令可以控制HTTP应答中的“Expires”和“Cache-Control”的头标,(起到控制页面缓存的作用)。

  可以在time值中使用正数或负数。“Expires”头标的值将通过当前系统时间加上您设定的 time 值来获得。

  epoch 指定“Expires”的值为 1 January, 1970, 00:00:01 GMT。

  max 指定“Expires”的值为 31 December 2037 23:59:59 GMT,“Cache-Control”的值为10年。

  -1 指定“Expires”的值为 服务器当前时间 -1s,即永远过期

  缓存案例

  图片缓存30天

  location ~.*.(jpg|png|jpeg)$

  {

  expires 30d;

  }

  js css缓存一小时

  location ~.*.(js|css)?$

  {

  expires 1h;

免责声明:文章转载自《Nginx大并发优化实战》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle导入导出常见问题及解决方案Apache CarbonData 2.0 开发实用系列之一:与Spark SQL集成使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Nginx启动/重启脚本详解

Nginx手动启动 停止操作 停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的步骤1:查询nginx主进程号ps -ef | grep nginx在进程列表里 面找master进程,它的编号就是主进程号了。步骤2:发送信号从容停止Nginx:kill -QUIT 主进程号快速停止Nginx:kill -TERM 主进程号强...

教你七招提高.NET网站性能

一、减少往返行程(Reduce Round Trips) 使用下面的方法可以减少Web服务器和Browser之间的往返行程: 1、为Browser启用缓存 如果呈现的内容是静态的或变化周期较长,应启用Browser缓存,避免发出冗余的http请求。 2、缓冲页面输出 如果可能,则尽量缓冲页面输出,处理结束后再一次传送到客户端,这可以避免频繁传递小块...

nginx配置phpcms v9伪静态规则 phpcms伪静态 404 Not Found

location / { if (!-f $request_filename){ rewrite (.*) /index.php; } rewrite ^/caipu-([0-9]+)-([0-9]+)-([0-9]+).html /index.php?m=content&c=index&a=show&catid=$1&am...

Nginx.conf配置文件参数说明与优化

参考连接:nginx 核心配置优化详解 先说下优化 1、nginx运行工作进程个数 worker_processes 1; Nginx进程,一般设置为和cpu核数一样(nginx启动后有多少个worker处理http请求)(worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。) 2、nginx...

04: gitlab安装与使用

1.1 gitlab安装(192.168.56.12中安装)   1、GitLab是什么?       1. GitLab实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。       2. GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。       3. 可以管理团队对仓库的访问,它非常易于浏览提交...

mysql 缓存机制

了解mysql缓存吗(顺丰) mysql缓存机制就是缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要在再去解析、优化、执行sql。 如果这个表修改了,那么使用这个表中的所有缓存将不再有效,查询缓存值得相关条目将被清空。表中得任何改变是值表中任何数据或者是结构的改变,包括insert,upd...