Nginx大并发优化实战

文章知识点:

  • [ ] 调优的必要性

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

一、调优的必要性

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

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

  1. 业务运行:线上业务正常运行,承载了公司业务。
  2. 监控业务:通过监控业务对线上业务进行监控,及时发现问题。
  3. 优化业务:通过监控分析,发现业务问题或者瓶颈,及时对业务或者软件就行调整、优化。
  4. 测试优化:优化完成后,需要对现有的优化进行测试,保证业务在当前优化模式中稳定、高效,能够解决当前问题。

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

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

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

三、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; (什么类型的页面或文档启用压缩)

开启压缩验证

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;
  }

缓存验证

原文地址:https://blog.51cto.com/biying/2442375

时间: 2024-10-26 07:16:12

Nginx大并发优化实战的相关文章

nginx高并发优化

nginx 高并发优化 一.关闭系统中不需要的服务 二.优化磁盘写操作 mount -o remount defaults,noatime,nodiratime partion mount_partion fstab 将partion mount_partion defaults 0 0 修改为partion mount_partion defaults,noatime,nodiratime 0 0 即修改为写入磁盘不修改访问时间 三.优化资源限制 ulimit -n 和ulimit -u 即o

nginx 服务器并发优化

apache 提供的 ab 可以对服务器进行压力测试, 安装 ab:   apt-get install apache2-utils 安装完后,ab 在目录  /usr/bin/ 下的. 执行: ab -c 并发数 -n 请求数 请求的URL    如: ab -c 2000 -n 50000 http://192.168.137.47/    表示对 http://192.168.137.47/ 进行50000次请求,并发数为 2000 我运行的机器不是在 192.168.137.47 上,运

Nginx 之并发优化

客户端/服务端 连接数 ulimit -n 100000 nginx 链接数 10240 个 worker_connections 10240;允许打开文件数worker_processes 1;worker_rlimit_nofile 10000; 系统的最大链接数:#more /proc/sys/net/core/somaxconn 太小 # echo 50000 > /proc/sys/net/core/somaxconn soket 快速回收 cat /proc/sys/net/ipv4

nginx运维实战之开山篇-安装时优化实战

本次博文议程如下: 1.1 NGINX安装和基本优化 测试环境:centos6.5 x64 ip 192.168.1.62 安装前基本优化详见 1.1.1 隐藏版本 为了防止被黑客扫描到web服务器信息,通过相对应的web服务器信息找出对应的版本漏洞,从而对web服务器进行入侵,nginx虽然功能强大,但是也是软件,软件就可能会有漏洞,例如nginx-0.6.32版本,默认情况下可能导致服务器错误的将任何类型的文件以php的方式进行解析,比如上传一个jpg格式的木马到论坛网站,通过漏洞解析成一个

域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)

继上一篇文章Http://www.cnblogs.com/EasonJim/p/7807794.html中说到的,Nginx虽然很强大,但是面对大并发时,一台Nginx总是有限的.即使后端有多台Nginx组成的集群时,前端毕竟只有一台Nginx,资源往往有限. 下面将介绍应对这样的情况应该有的解决方案,其实原理就是集群,使用的是LVS. 我猜测和简单的理解(观点虽然是错的,但是好理解,如果要深入原理远没有这么简单):为什么LVS的集群能够抵御这么大的并发,一切都出在VIP上,首先依托LVS的负载

大数据开发实战:Hive优化实战3-大表join大表优化

5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优化方案. 5.1.问题场景 问题场景如下: A表为一个汇总表,汇总的是卖家买家最近N天交易汇总信息,即对于每个卖家最近N天,其每个买家共成交了多少单,总金额是多少,假设N取90天,汇总值仅取成交单数.A表的字段有:buyer_id. seller_id.pay_cnt_90day. B表为卖家基本信

PHP服务缓存加速优化实战

PHP服务缓存加速优化实战: (1)操作码介绍及缓存原理: 当客户端请求一个PHP程序的时候,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code)文件. 该文件是执行PHP代码后的一种二进制表示形式. 默认情况下,这个编译好的操作码文件由PHP引擎执行后进行丢弃. 操作码文件缓存机制就是将编译还的文件保存下来,并放到共享内存中,以便于下一次调用该PHP页面的时候重用它,避免了相同的代码重复度,节省了PHP引擎重复编译的时间. 降低了服务器负载,同时减少了服务

网易视频云:HBase优化实战

网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台.现在,网易视频云的技术专家给大家分享一则技术文:HBase优化实战. 背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据.对于像Datastream这种数据量巨大.对写入要求

linux下nginx安装、配置实战

1什么是Nginx Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,在高连接并发的情况下Nginx是Apache服务器不错的替代品.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.目前中国大陆使用nginx网站用户有:新浪.网易.腾讯,另外知名的微网志Plurk也使用nginx. Nginx作为负载均衡服务器,既可以在内部直接支持Rails和PHP程序对外进行服务,也可