Nginx优化

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一.设置Nginx运行进程个数

1.查看cpu个数

grep processor /proc/cpuinfo

  使用top 按1,也可以查看cpu的核心数

2.设置Nginx进程数

   我的cpu数量是4,修改为4

vim /usr/local/nginx/conf/nginx.conf

 二.Nginx运行CPU亲和力

vim /usr/local/nginx/conf/nginx.conf

 4核4线程配置

注4核cpu开启4个进程 0001表示开启第一个cpu内核0001表示开启第一个cpu内核 0010开启第2个cpu内核依次类推有多少个核就有几位数1表示该内核开启0表示该内核关闭。

8核8线程配置

vim /usr/local/nginx/conf/nginx.conf 

4线程的cpu只想跑两个进程

vim /usr/local/nginx/conf/nginx.conf  

二.永久修改系统最大打开文件数

在尾部添加重新登录生效

 vim /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

三.Nginx事件处理模型

vim /usr/local/nginx/conf/nginx.conf 

nginx采用epoll 事件模型。处理效率高。 

worker_connections是单个worker进程允许客户端最大连接数这个数值一般根据服务器性能和内存来制定实际最大值就是worker进程数乘以work_connections

如何设置可以根据一个进程启动所占内存top -u wwwwww表示nginx程序用户

刚启动一个进程占用内存是5M左右

四.http主题优化

     开启高效传输模式

   vim /usr/local/nginx/conf/nginx.conf

 sendfile  on;

开启高效文件传输模式sendfile指令指定nginx是否调用sendfile函数来传输输出文件当nginx是一个静态文件服务器的时候开启sendfile配置项能大大提高nginx的性能。

tcp_nopush on

在sendfile开启模式才有效防止网络阻塞积极的减少网络报文段的数量将响应头和响应体两部分一起发送而不一个接一个的发送。
 

五.长时间超时时间

 主要目的是CPU内存控制连接数因为建立连接也是需要消耗资源的

vim /usr/local/nginx/conf/nginx.conf

keepalive_timeout  65;

 keepalived_timeout  与client的keep-alive连接超时时间单位是秒服务器和客户端无交互后将在这个时间后关闭连接长连接可以减少重建连接的开销如果设置时间过长用户又多长时间保持连接会占用大量资源。

六.文件上传大小限制

 vim /usr/local/nginx/conf/nginx.conf

 client_max_body_size 10m;  #在40行添加

七.gzip调优

  启用gzip

 使用gzip压缩功能可为我们节约带宽加快传输速度有更好的体验节约成本

Nginx启用压缩功能需要用ngx_http_gzip_module模块apache使用的是mod_deflate

一般我们需要压缩的内容有文本jshtmlcss

对于图片视频flash不压缩同时也要注意我们使用gzip的功能是需要消耗CPU的

在http{}区域中添加

vim /usr/local/nginx/conf/nginx.conf

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 32k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types  text/css text/xml application/javascript;
    gzip_vary on;

 参数说明

gzip on;        #开启压缩功能

gzip_min_length  1k;    #设置允许压缩的页面最小字节数页面字节数从header头的Content-Length内容长度中获取默认值是0建议设置成大于1K如果小于1K可能会越压越大。

gzip_buffers     4 32k;  #压缩缓冲区大小表示申请4个单位为32K的内存作为压缩结果流缓存默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果

gzip_http_version 1.1;  #压缩版本用于设置识别HTTP协议版本默认是1.1目前大部分浏览器已经支持GZIP解压使用默认即可。

gzip_comp_level 6;  #压缩比例用来指定GZIP压缩比1压缩比最小处理速度最快9压缩比最大传输速度快但是处理慢也比较消耗CPU资源。
 

gzip_types  text/css text/xml application/javascript;   #用来指定压缩的类型‘text/html’类型总是会被压缩

默认值: gzip_types text/html (默认不对js/css文件进行压缩

#不能使用通配符 text/*

#不论是否指定text/html  默认压缩

# 设置压缩哪种文本文件可参考 conf/mime.types

gzip_vary on;   #启用应答头"Vary: Accept-Encoding"。和http头有关系加个vary头给代理服务器用的有的浏览器支持压缩有的不支持所以避免浪费不支持的也压缩所以根据客户端的HTTP头来判断是否需要压缩。其实cdn代理服务器原理上都是代理服务器。他们一般以url为key值进行缓存。而vary属性的设置告诉了代理根据url缓存的同时vary的信息也作为key。比如客户端浏览器请求的信息里带上了Accept-Encoding:gzip 则返回压缩副本。如果没有带这个头信息默认返回非压缩副本
 

八.日志切割优化

日志优化的目的为了一天日志一压缩按天存放

yum install -y bzip2

cd /usr/local/nginx/logs/

vim cut_nginx_log.sh

#!/bin/bash
date=$(date +%F -d -1day)
cd /usr/local/nginx/logs
if [ ! -d cut ] ; then
        mkdir cut
fi
mv access.log cut/access_$(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/$date.tar.bz2 cut/*
rm -rf cut/access* && rm -rf cut/error*
find -type f -mtime +10 | xargs rm -rf

 crontab -e 设置计划任务

0 0 * * * /bin/sh /usr/local/nginx/logs/cut_nginx_log.sh > /dev/null 2>&1

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx