LNMP Nginx服务器调优实践

所需积分/C币:29 2019-04-24 14:19:29 596KB PDF
收藏 收藏
举报

LNMP Nginx服务器调优实践,大牛的经验,值得好好学习下
资源由www.eimhe.con美河学习在线收集分享 [root@xuegod63 nginx]#. sbin/nginx [roo@ xuegod63 nginx#ls#启动后,会多一些临时文件 client body temp fastcgi temp logs sbin uwsgi temp conf proxy temp scgi temp root@xuegod63 nginx-1122#/usr/local/nginx/sbin/nginx [root @xuegod63 nginx-1122]# netstat-antup grep nginx tcp 0 00.0.0.0:80 0.0.0.0: LISTEN 52553/nginx 测试是否隐藏了版本和软件名 [root@xuegod63 nginx-1122]# curl -1.168.1.63 HTTP/1.12000K Server: XWS/8.8.2 错误代码测试(尽量使用 firefox或者类360流览器) root@ xuegod63 ngInx-1.122l# iptables-F#火墙清空一下 http://192.168.1.63/aaa.html 50实主元游9【小测】 c合☆htp/192.168.163/ aaa. html 为点此搜索 P。404 Not found 404 Not found XWS/8.8.2 Nginx运行用户 [roo@ xuegod63~# useradd-M-s/sbin/ nologin nginx∥修改 nginx默认运行用户 [root@xuegod63 -]# ps-aux grep nginx //默认是 nobody用户 nobody 52554 0.0 0.1 22660 1568? S 14: 39 0: 00 nginx worker process [root@xuegod63 -]# vim /usr/local/nginx/conf/nginxcon 改:# user nobody; 为 :user nginx, [root @xuegod63-]# /usr/localy/nginx/sbin/nginx-s reload [root@xuegod63-1# ps-aux grep nginx naInx 52555000.1226601568?s14:390:00 nginx: worker process 在这里我们还可以看到在查看的时候,work进程是 ngInx用户了,但是 master进程还是root 其中, master是监控谜程,也叫主进程,work是工作进程 所以我们可以 master监控进程使用root,可以是降级使用普通用户,如果都是用普用户,注意编译 安装的时候,是用普通用户执行,sudo方式操作!可以直接理解为 master是管理员,Work进程才是为 用户提供服务的! Nginx运行进程个数 Nginx运行进程个数一般我们设置cPU的核心或者核心数x2,如果你不了解,top命令之后按1也可以 看出来(一般直接追到线程即可) 资源由www.eimhe.con美河学习在线收集分享 我是4核cpu,这里设为4 [root @xuegod63-]* vim /usr/local/nginx/conf/nginx. conf FX: 4 worker processes 4; 为:4 worker processes4 [root @xuegod63]# /usr/local/nginx/sbin/nginx-s reload [root@xuegod63-]# ps -axu grep nginx [root@ xuegod63 ngInx-1.122]#ps-axu| grep nginx#运行4个 worker进程 [root@xuegod63 - ] ps-axu grep nginx root 64830.00.0205801400? Ss 21: 05 0: 00 nginx: master process/sbin/nginx root 66480.00.21517965372pts2s+21:120:00vm cont/nginx con ngInx68710.00.0230881512? s 21: 22 0: 00 nginx: worker process ngInx68720.00.0230881512? s 21: 22 0: 00 nginx: worker process nginx6873000.0230881512? s 21: 22 0: 00 nginx: worker process ngInx68740.00.0230881512? s 21: 22 0: 00 nginx: worker process 1613Ngnx运行CPU亲和力 这个要根据你的cPU线程数配置 比如4核4线程配置 [root@xuegod63-1# vim /usr/local/nginx/conf/nginx. conf 4 worker processes 4, 5 worker cpu affinity 0001 0010 1000 匕如8核8线程配置 4 worker processes 8 5 worker cpu affinity000000010000001000000100000010000001000000100000 0100000010000000 那么如果我是4线程的CPU,我只想跑两个进程呢? worker processes 2 worker cpu affinity 0101 1010; 注:表示第一个进程在第一个和第三个cpu上运行,第二个和第四个cpu上运行,两个进程分别在 这两个组合上轮询! worker processes最新开启8个,8个以上性能提是升不会再提升了,而且稳定性变得更低,所以8 个进程够用了。 Nginx最多可以打开文件数 7 worker rlimit nofile 102400 这个指令是指当一个 nginx进程打开的最多文件描述符数目理论值应该是最多打开文件数 ulimit -n)与 ngInx进程数相除,但是 nginx分配请求并不是那么均匀,所以最好与 ulimit -n的值保持致。 资源由www.eimhe.con美河学习在线收集分享 Nginx事件处理模型 events I use epoll; worker connections 1024: 扩展 select, poll, epol都是o多路复用的机制。/O多路复用就通过一种机制,可以监视多个描述 符,一旦某个述符就绪(一般是诙就绪或者写就绪),能够通知程序进行相应的读写操作。 Epoll在 Linux26内核中正式引入,和 select相似,其实都o多路复用技术。 epo!优势: 1、 Epoll没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于2048,一 般来说这个数目和系统内存关系很大,具体数目可以cat/proc/sys/fs/ file-max查看。 [root@xuegod63 nginx-1122]# cat/proc/sys/fs/file-max 95094 2、效率提升,Epo川l最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际 的网络环境中,Epol的效率就会远远高于 select和pol 3、内存拷贝, Epoll在这点上使用了“共享内存",这个内存拷贝也省略了 161.4单个进程允许客户端最大并发连接数 worker connections102400;#改第17行 这个数值-般根据服务器性能和内存来制定,也就是单个进程最大连接数,实际最大并发值就是work 进程数乘以这个数。 如何设置,可以根据设置一个进程启动所占内存,top- u nginx,但是实际我们填入一个102400, 足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了! 例 top -u nginx PID USER PR NI ViRT RES SHR %CPU %MEM TIME+ COMMAND 47221 nginx200230881764832s0.00.10:01.06 ngInx 47223 nginx20023088177284050.00.1000.77 ngInx 47225 nginx200230881768836s0.0010:00.64 nginx 47226 nginx20023088176483250.00.10:00.87 ngInx 刚启动是17M左右 Servername匹配和 location 对应需要修改的配置文件的位置: server 40 listen 80: 41 server name loca lhost. 42 #charset koi8-r. 45 #access_ log logs/host access log main 46 47 location/ 48 root html 9 indexindex, html index. htm 资源由www.eimhe.con美河学习在线收集分享 ServerName匹配 1:精确匹配:www.aa.com 2:左侧通配符匹配:* aa. con 3:右侧通配符匹配:wwM* 4:正则表达式:~A机 aa\ con$ 5: default server 6、服务|P地址 locati 绝对匹配 ∧~:URL前半部分匹配,不检查正则 正则匹配,区分大小写 ~*“正则匹配”不区分大小写 \转义 配置任意个任意字符 $以什么结尾 例: [root @xuegod63 sbin]# grep bash$ /etc/passwd root: x: 0: O: root: root bin /bash 161.5开启高效传输模式 Include mime typ 媒体类型 default type application/ octet-strean;默认媒体类型足够 31 sendfile on 开启高效文件传输模式, sendfile指令指定 nginx是否调用 sendfile函数来输出文件,对于普通应用设为on,如果用来进行下载等应用磁盘|o重负载应用,可设 置为of,以平衡磁盘与网络o处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 32 tcp nopush on 必须在 sendfile开启模式才有效,防止网络阻塞,积极的减少 网络报文段的数量 161.6连接超时时间 主要目的是保护服务器资源,cPU,内存,控制连接数,因为建立连接也是需要消耗资源的,TCP的 三次握手四次挥手等,我们一般断掉的是那些建立连接但是不做事儿,也就是我建立了链接开始,但是后 续的握手过程没有进行,那么我们的链接处于等待状态的,全部断掉! 同时我们也希望php建议短链接,消耗资源少 35 keepalive timeout 65 tcp nodelay on client header timeout 15. client body timeout 15 send timeout 15. keepalived timeout客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接 tcp nodelay:也是防止网络阻塞,不过要包涵在 keepalived参数才有效 client header timeout客户端请求头读取超时时间如果超过设个时间没有发送任何数据, nginx 将返回 request time out的错误 资源由www.eimhe.con美河学习在线收集分享 client body timeout客户端求主体超时时间,超过这个时间没有发送任何数据,和上面一样的错 误提示 send timeout响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超过这个时 间,客户端没有任何活动, ngInx关闭连接 文件上传大小限制 我们知道PHP可以修改上传文件大小限制, ngInx也可以修改 https 40 client max body size 10m; 1621 Fastcgi调优 Nginx没有配置 fastcgi,你使用 ngInx是一个失败的方法 配置之前。了解几个概念: Cache:写入缓存区 Buffer:读取缓存区 Fastcgi是静态服务和动态服务的一个接囗 fastcgi connect timeout300;#指定链接到后端 FastcGi的超时时间。 fastcgi send timeout 300; #向 FastcGI传送请求的超时时间,这个值是指已经完成两次握 手后向 FastCGI传送请求的超时时间。 fastcgi read timeout 300 #指定接收 Fastco应答的超时时间,这个值是指已经完成两次 握手后接收 Fastco应答的超时时间。 fastcgi buffer size 64k; #指定读取 FastCGI应答第一部分需要用多大的缓冲区,这个值表 示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为 fastcgi buffers选项指定的 缓冲区大小 fastcgi buffers464k;#指定本地需要用多少和多大的缓冲区来缓冲 FastcGI的应答请求,如果 一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存,如果页面大小大于 256KB,那么大于256KB的部分会缓存到 fastcgi temp指定的路径中,但是这并不是好方法,因为内 存中的数据处理速度要快于磁盘。一般这个值应该为站点中php脚本所产生的页面大小的中间值,如果站 点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“816K"、“464k等。 fastcgi busy buffers size128k;议设置为 fastcgi buffer的两倍,繁忙时候的 buffer fastcgi temp file write size128k;#在写入 fastcgi temp path时将用多大的数据库,默认值 是 fastcgi buffers的两倍,设置上述数值设置小时若负载上来时可能报502 Bad Gateway fastcgi cache gnix;示开启 Fasten缓存并为其指定一个名称。开启缓存非常有用,可以有效降 低cPU的负载,并且防止502的错误发生,但是开启缓存也可能会引起其他问题,要很据具体情况选择 fastcgi cache valid2003021h;#用来指定应答代码的缓存时间,实例中的值表示将200和302 应答缓存一小时,要和 fastcgi cache配合使用 fastcgi cache valid3011d;#将301应答缓存一天 fastcgi cache valid any1m#将其他应答缓存为1分钟 fastcgi cache min uses 1 #请求的数量 fastcgi cache path #定义绶存的路径 修改nginx.conf配置文件,在http标签中添加如下: fastcgi connect timeout 300 资源由www.eimhe.con美河学习在线收集分享 fastcgi send timeout 300 fastcgi read timeout 300: fastcgi buffer size 64k; fastcgi buffers 4 64k fastcgi busy buffers size 128k; fastcgi temp file write size 128k #fastcgi temp path /data/ngx fcgi tmp; fastcgi cache path/ data/ngx fcgi cache levels=2:2#缓存路径, levels目录层次2级 keys zone= ngx fcgi cache:512m#定义了一个存储区域名字,缓存大小 inactive=1d max size=40g; #不活动的数据在缀存中多长时间,目录总大小 在 server location标签添加如下: location w. *.(phplphp5)?s fastcgi pass 127.0.0.1: 9000; fastcgi index index. php: include fastcgi. conf fastcgi cache ngx fcgi cach fastcgi cache valid 200 302 1h fastcgi cache valid 301 1d fastcgi cache valid any 1 m fastcgi cache min uses 1: fastcgicacheusestaleerrortimeoutinvalidheaderhttp500; fastcgicachekeyhttp://shosTsrequesturi fastcgi cache资料: 官方文档 http://nginx.org/en/docs/http:/ngxhttpfastcgimodule.html#fastcgicache 16.3.1 调优 使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所 以说这是一个重点 Nginx启用压缩功能需要你来ngxhttpgzipmodule模块apache使用的是moddeflate 般我们需要压缩的内容有:文本,js,html,css对于图片,视频, flash什么的不压缩,同时也 要注意,我们使用gzip的功能是需要消耗cPU的! gzIp on, #开启压缩功能 gzip min length1k;#设置允许压缩的页面最小字节数,页面字节数从 header头的 Content-Length(内容长度)中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如 果小与1K可能会越压越大 gzip buffers432k#压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存, 默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果 gziphttpversion1.1;#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP 协议版本,默认是1.1,目前大部分浏览器已经支持GzP解压,使用默认即可 资源由www.eimhe.con美河学习在线收集分享 gzip comp level9;#缩比例,用来指定GzP压缩比,1压缩比最小,处理速度最快,9压缩 比最大,传输速度快,但是处理慢,也比较消耗CPU资源 gzip types text/ css text/xml application/javascript#用来指定压缩的类型,text/html 类型总是会被压缩。 gzip vary on;# vary header支持,该选项可以让前端的存服务器绥存经过GZP压缩的页面, 例如用 Squid缓存经过 nginx压缩的数据 那么配置压缩的过程中,会有一下参数 gap on gzip min length 1k; gzip buffers 4 32k; gziphttpversion1.1; gzip comp level 9; gzip types text/css text/xml application/javascript gzIp vary on: 164.1 expires缰存调优 缓存,主要针对于图片, Css, s等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我 们完全可以设置图片在浏览器本地缓存365d,css,js,html可以绥存个10来天,这样用户第一次打开 加载慢一点,第〓次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来! pires绶存配置在 server字段里面 location - *\(gif jpg jpeg png bmp swf)s exp pres 3650d location *\.s css)?s expires 30d 同时也可以对目录及其进行判断 location -A/(images javascript js css flash media static)/i expires 360d location -(robots. txt)( expires 7d, break expire功能优点 (1) expires可以降低网站购买的带宽,节约成本 (2)同时提升用户访问体验 (3)减轻服务的压力,节约服务器成本,甚至可以节约人力成本,是web服务非常重要的功能。 expire功能缺点: 被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。 解决办法: 资源由www.eimhe.con美河学习在线收集分享 第一个缩短绶存时间,例如:1天,不彻底,除新频率大于1天 第二个对缓存的对象改名 a图片,附件—般不会被用户修改,如果用户修改了,实际上也是更改文件名重新传了而已 b网站升级对于js,cSs元素,一般可以改名,把css,js,推送到CDN 网站不希望被缓存的内容 1)广告图片 2)网站流量统计工具 3)更新频緊的文件( google的logo) 1651日志切割优化 [root @xuegod63 -]# cd /usr/local/nginx/logs/ 日志优化的目的,是为了一天日志一压缩,按天存放,超过10天的删除 [root @xuegod63 logs]# vim cut nginx log. sh //每天日志分割脚本 tar tyf2017-011-08 tar bz?2显示文件内容) #! /bin/bash date=S(date +%F-d-1day) cd /usr/local/nginx/logs if [!-d cutI: then mkdir cut fi mv access log cut/access S(date +%F-d -1day) log mv error log cut/error $(date +%F -d-1day)log /usr/local/nginx/sbin/nginx-s reload tar-jcvf cut/Sdate. tar. bz2 cut/* rm -rf cut/access" &8 rm-rf cut/error cat>>/var/spool/cron/root< <eof 00 00* **/bin/sh /usr/local/nginx/logs/cut nginx log. sh >/dev/null 2>81 eof find-type f-mtime +10 xargs rm-rf 健康检查的日志,不用输入到log中,因为这些日志没有意义,我们分析的话只需要分析访向日志, 看看一些页面链接,如200,301,404的状态吗,在SEO中很重要,而且我们统计PV是页面计算,这 些都没有意义,反而消耗了磁盘lo,降低了服务器性能,我们可以屏蔽这些如图片,js,css这些不宜变 化的内容 [root@xuegod63-I# vim /usr/local/nginx/conf/nginx. conf location w. *\s jpg jpeg JPGJPEG css bmp gif GIF)S i access loa o off: 日志目录权限优化 [root@xuegod63 -] chown-R root root /xuegod logs [root@xuegod63 -] chmod-R 700/xuegod/logs/ 日志格式优化 #vim /usr/local/nginx/conf/nginx. conf

...展开详情
试读 17P LNMP Nginx服务器调优实践
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • 至尊王者

    成功上传501个资源即可获取
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
LNMP Nginx服务器调优实践 29积分/C币 立即下载
1/17
LNMP Nginx服务器调优实践第1页
LNMP Nginx服务器调优实践第2页
LNMP Nginx服务器调优实践第3页
LNMP Nginx服务器调优实践第4页

试读结束, 可继续读2页

29积分/C币 立即下载 >