nginx 优化参数

1.优化配置文件 vim /usr/local/nginx/conf/nginx.conf

  增加并发量

worker_processes 1;         //进程数,与CPU核心数量一致

worker_rlimit_nofile 100000; //一个进程打开的最多文件数

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000  //为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到多个cpu

events {                //events模块中包含nginx中所有处理连接的设置

worker_connections 2048;    //每个worker(进程)最大并发连接数

multi_accept on;            //在Nginx接到一个新连接通知后调用accept()来接受尽量多的连接

use epoll;                 //使用epoll的I/O模型

}


http {                  //HTTP模块控制着nginx http处理的所有核心特性

server_tokens off;         //隐藏掉版本号,提高安全性

sendfile on;               //开启sendfile系统调用传输文件,提升文件传输性能

tcp_nopush on;            //将响应头和正文的开始部分一起发送

tcp_nodelay on;           //这个选项仅在将连接转变为长连接的时候才被启用

access_log off;           //关闭access_log,即不记录访问日志,可以让读取磁盘IO操作更快

error_log error.log crit;  //错误日志记录级别,默认crit(记录最少),告诉nginx只能记录严重的错误

keepalive_timeout 10;       // keepalive超时时间

client_header_timeout 10;   //客户端向服务端发送一个完整的 request header(请求头) 的超时时间

client_body_timeout 10;     //指定客户端与服务端建立连接后发送 request body(请求体) 的超时时间

reset_timedout_connection on; //告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。

send_timeout 10;           //指定客户端的响应超时时间

include mime.types;        //只是一个在当前文件中包含另一个文件内容的指令

default_type text/html;    //设置文件使用的默认的MIME-type

charset UTF-8;             //仅需要中文时需要改选项,可选项


对页面进行压缩处理

gzip on;       //采用gzip压缩的形式发送数据

gzip_disable "msie6";  //为指定的客户端禁用gzip功能

gzip_proxied any;      //压缩所有的请求

gzip_min_length 1000;  //设置对数据启用压缩的最少字节数

gzip_comp_level 6;     //设置数据的压缩等级

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;      //设置需要压缩的数据格式


服务器内存缓存

open_file_cache max=100000 inactive=20s;  //打开缓存的同时也指定了缓存最大数目,以及缓存的时间

open_file_cache_valid 30s;//检测正确信息的间隔时间,文件句柄的有效时间是30秒,30秒后过期

open_file_cache_min_uses 2;  //只有访问次数超过5次会被缓存,定义了open_file_cache中指令参数不活动时间期间里最小的文件数。

open_file_cache_errors on;   //指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件

        server {

                listen       80;

                server_name  localhost;

                location / {

                        root   html;

                        index  index.html index.htm;

                 }

                error_page   500 502 503 504  /50x.html;

                location = /50x.html {

                        root   html;

                 }

        }


}



2.优化内核参数


vi /etc/sysctl.conf       CentOS5.5中可以将所有内容清空直接替换为如下内容:


net.ipv4.ip_forward = 0             //

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1           //开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000       //timewait的数量,默认是180000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144      //每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.somaxconn = 262144            //web应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。



net.ipv4.tcp_max_orphans = 3276800       //系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上

net.ipv4.tcp_max_syn_backlog = 262144    //记录的那些尚未收到客户端确认信息的连接请求的最大值

net.ipv4.tcp_timestamps = 0              //时间戳可以避免序列号的卷绕

net.ipv4.tcp_synack_retries = 1        //这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

net.ipv4.tcp_syn_retries = 1        //在内核放弃建立连接之前发送SYN 包的数量。

net.ipv4.tcp_tw_recycle = 1       //启用timewait 快速回收

net.ipv4.tcp_tw_reuse = 1         //开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1          //如 果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间

net.ipv4.tcp_keepalive_time = 30           //当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时

net.ipv4.ip_local_port_range = 1024 65000       //允许系统打开的端口范围。


使配置立即生效可使用如下命令:

/sbin/sysctl -p



3.关于系统连接数的优化

linux默认值 open files 和 max user processes 为 1024,查看 ulimit -n , ulimit Cu 


问题描述:

说明server 只允许同时打开 1024 个文件,处理 1024 个用户进程

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

新装的linux 默认只有1024 ,当作负载较大的服务器时,很容易遇到error: too many open files 。因此,需要将其改大。


解决方法:

使用ulimit Cn 65535 可即时修改,但重启后就无效了


有如下三种修改方式:

1.在/etc/rc.local 中增加一行 ulimit -SHn 65535

2.在/etc/profile 中增加一行 ulimit -SHn 65535

3.在/etc/security/limits.conf 最后增加:


* soft nofile 65535

* hard nofile 65535

* soft nproc 65535

* hard nproc 65535


具体使用哪种,在CentOS 中使用第1 种方式无效果,使用第3 种方式有效果,而在Debian 中使用第2 种有效果




4.关于FastCGI 的几个指令

在配置文件vim /usr/local/nginx/conf/nginx.conf

http

{

 ......

keepalive_timeout 60;

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2     //这个指令为FastCGI 缓存指定一个路径,目录结构等级

keys_zone=TEST:10m            //关键字区域存储时间

inactive=5m;                  //非活动删除时间

fastcgi_connect_timeout 300;    //指定连接到后端FastCGI 的超时时间

fastcgi_send_timeout 300;       //向FastCGI 传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI 传送请求的超时时间

fastcgi_read_timeout 300;       //接收FastCGI 应答的超时时间,这个值是指已经完成两次握手后接收FastCGI 应答的超时时间

fastcgi_buffer_size 4k;         //指定读取FastCGI 应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k

fastcgi_buffers 8 4k;           //指定本地需要用多少和多大的缓冲区来缓冲FastCGI 的应答

fastcgi_busy_buffers_size 8k;       //

fastcgi_temp_file_write_size 8k;         //在写入fastcgi_temp_path 时将用多大的数据块,默认值是fastcgi_buffers 的两倍。

fastcgi_cache TEST;               //开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误

fastcgi_cache_valid 200 302 1h;    //

fastcgi_cache_valid 301 1d;

fastcgi_cache_valid any 1m;          //为指定的应答代码指定缓存时间,如上例中将200,302 应答缓存一小时,301 应答缓存1 天,其他为1 分钟

fastcgi_cache_min_uses 1;        //缓存在fastcgi_cache_path 指令inactive 参数值时间内的最少使用次数,如上例,如果在5 分钟内某文件1 次也没有被使用,那么这个文件将被移除

fastcgi_cache_use_stale error timeout invalid_header http_500;   //


 ......

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • nginx的安装与基本配置文档网上已经有很多了,但具体讲优化的文章还比较少,偶尔发现有这么一篇《nginx优化 突...
    yichen_china阅读 8,730评论 0 65
  • Nginx优化详解-------超详细 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. w...
    name_cc2f阅读 624评论 0 1
  • nginx优化 突破十万并发 一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: worker_pr...
    SkTj阅读 964评论 0 4
  • (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2**如果不了解cpu的核数,可以top命令之后...
    小慕先森阅读 2,082评论 0 0
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_阅读 1,814评论 0 3