linux nginx 高并发,Nginx性能优化配置实现高并发

前言:大多数用户安装完nginx之后,就是通过简单的安装apt或者源码安装简单搭建了一个web服务器。但是要真正想迸发出nginx的性能,必须深入一些,本文将会对nginx进行一些调优,以更好的来适用于大量客户端访问时候的性能:

1.基本的优化:

基本配置我主要配置nginx.conf文件,其中包含nginx不同模块的所有设置,根据自己的安装路径寻找nginx.conf。

首先,设置全局设置,然后按照文件中的模块逐一优化,最后我会把优化过的配置文件传到最下面写到。

2.高级配置:

nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上。

1.user  www-data;

2.pid  /var/run/nginx.pid

3.worker_processes auto;

4.work_rlimit_nefile 100000;

user和pid应该按默认设置即可。

worker_processes定义了nginx对外提供的web服务时候worker的进程数。最优值取决于很多因素。包括cpu核心的数控存储数据的硬盘数量以及负载模式。不能确定的时候,设置成(“auto”)自动让自动检测。

worker_rimit_nofile更改worker进程的最大打开文件数限制,如果没有设置好,这个值为操作系统的限制。设置好之后操作系统和nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”的问题了。

Events模块:

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

events {

worker_connections  1024;

multis_accept on;

use epoll;

}

worker_connections设置可以一个由worker进程同时打开的最大连接数。如果设置了上面提到的worker_rimit_nofile,可以把这个数值设置更高,注意:最大的客户数量也是由系统的可用socket连接数限制(64k).所以设置最不实际的没用。

mylti_accept告诉nginx收到一个新的通知链接之后接受尽可能多的连接。

use设置用于复用客户端线程的轮查方法,如果你使用linux2.6x,应该使用epoll,如果使用BSD,应该使用kqueue。

http模块

http模块控制着nginx http处理的所有核心特性,因为这里只有很少的配置,所以我们只选择一小部分。所以这些设置都应该在http模块中,甚至你不会特别注意到这段配置。

http {

server_tokens off;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

...

}

server_token 并不会让nginx执行的速度加快,但是可以关闭在报错时候显示的版本号。这个点是对安全性有好处的。

sendfile可以让sendfile()发挥作用,sendfile()可以在磁盘和tcp socket之间相互拷贝数据。pre-sendfile是传输数据之前在用户空间申请缓存区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。sendfile()是立即将数据磁盘读到OS缓存,因为这种拷贝是在内核完成的。sendfile()要比组合read()和write()以及打开丢弃缓冲更加有效。

tcp_nopush 告诉nginxz在一个数据包里发送所有的文件,而不一个接一个的发送。

tcp_nodelay告诉nginx不要缓存数据,而是一段一段的发送要需要及时发送的数据时候,就应该给应用设置这个属性,这样发送小块数据信息时候就不能立即得到返回值。

1.access_log off;

2.erro_log /var/log/nginx/erro.log crit;

access_log 设置nginx是否将存储访问日志,关闭这个选项可以让读取硬盘IO操作更快。

error_log 告诉nginx只要记录严重的错误即可。

1.keepalive_tineout 10;

2.client_header_timeout 10;

3.client_body_timeout 10;

4.reset_timeout_connection on;

5.send_timeout 10;

keepalive_timeout给客户端培训keep-alive链接超时时间,服务器将在这个超时时间过后关闭链接。这个可以设置低点让nginx持续的工作时间更长。

clent_header_timeout 和clent_body_timeout设置请求头和请求体各自的超时时间,我们也可以把这个设置低点。

reset_timeout_connection 告诉nginx关闭不响应的客户端连接,这将会释放那个客户端占用的内容。很关键哦!

send_timeoout指定客户端的响应超时时间,这个设置不会用于整个转发器,而是在两次客户端读取操作之间,如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。

1.limit_conn_zone $blinary_remote_addr zone=addr:5m;

2.limit)conn addr 100;

limit_conn_zone 设置用于保存各种key如当前的连接数的共享内存参数。5m就是5兆字节。这个值应该被设置的足够大以存储(32k*5/16*5) 大字节。

limit_conn 为给定key设置最大连接数,这里key是addr,这里设置100,也就是说允许每一个ip最多同事打开100个连接。

1.include /etc/nginx/mime.types;

2.default_type text/html;

3.charset UTF-8;

include 只是当前文件中包含另一个文件内容的指令,这里我们使他用来加载稍后用到一系列的MIME类型。

default_type 设置文件使用的默认mime-type。

charset设置头文件中默认的字符集。

gzip on;

gzip_disable "msie6";

# gzip_static on;

gzip_proxied any;

gzip_min_length 1000;

gzip_comp_level 4;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

gzip是告诉nginx采用gzip的压缩形式发送数据,这将会减少发送的数据量。

gzio_disable为指定的客户端禁止gzip工。

gzip_static告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。

gzip_proxied允许或者禁止压缩基于请求和香港的响应流,这里设置all,意味着压缩所有的请求。

gzip_min_length设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,最好不要压缩,这样会降低处理该请求的所有进程的速度。

gzip_type 设置需要压缩的数据格式,上面的例子中已经有一些了。

# cache informations about file descriptors, frequently accessed files

# can boost performance, but you need to test those values

open_file_cache max=100000 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 2;

open_file_cache_errors on;

##

# Virtual Host Configs

# aka our settings for specific servers

##

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

open_file_cache打开缓存的同时也指定了缓存最大的数目,以及缓存的时间,可以设置一个         相对较高较长的时间,这样就可以在活动不超贵哦20ms后清除。

open_file_cache_min_uses定义了open_file_cache中指令参数不活动时间期间里最小的文件数。

open_file_cache_errors指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。包括了服务器的模块。这些是在不同的文件中定义的。如果服务器的模块你在这些文职,你就得修改这一行来指定正确位置。

完整优化过的nginx.conf配置文件。

user www-data;

pid /var/run/nginx.pid;

worker_processes auto;

worker_rlimit_nofile 100000;

events {

worker_connections 2048;

multi_accept on;

use epoll;

}

http {

server_tokens off;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

access_log off;

error_log /var/log/nginx/error.log crit;

keepalive_timeout 10;

client_header_timeout 10;

client_body_timeout 10;

reset_timedout_connection on;

send_timeout 10;

limit_conn_zone $binary_remote_addr zone=addr:5m;

limit_conn addr 100;

include /etc/nginx/mime.types;

default_type text/html;

charset UTF-8;

gzip_disable "msie6";

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;

open_file_cache_min_uses 2;

open_file_cache_errors on;

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

}

附件有一份*.conf的配置文件/最后编辑完配置文件,重启nginx即可生效。

.conf配置文件下载:点击下载

fc6e80628714f618db3631f58a5953cc.png

明日计划:

http://wenku.baidu.com/search?word=411898301&lm=0&od=0&pn=0 --选一篇练习整理。

http://www.cnyunwei.com/thread-27696-1-1.html ---监控明日

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值