大家好,今天来为大家解答nginx设置超时时间这个问题的一些问题点,包括nginx反向 *** 配置也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
本文目录
一、高并发nginx,需要注意哪些配置
一、一般来说nginx配置文件中对优化比较有作用的为以下几项:
nginx进程数,建议按照cpu数目来指定,一般为它的倍数(如,2个四核的cpu计为8)。
2.worker_cpu_affinity0000000100000010000001000000100000010000001000000100000010000000;
为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文
件数(ulimit-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以更好与ulimit-n的值保持一致。
现在在linux2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
查看linux *** 文件描述符的 *** :
[root@web001~]#sysctl-a|grepfs.file
与apache相类,nginx针对不同的 *** 作 *** ,有不同的事件模型
Select、poll属于标准事件模型,如果当前 *** 不存在更有效的 *** ,nginx会选择select或poll
Kqueue:使用于FreeBSD4.1+,OpenBSD2.9+,NetBSD2.0和MacOSX.使用双处理器的MacOSX *** 使用kqueue可能会造成内核崩溃。
Epoll:使用于Linux内核2.6版本及以后的 *** 。
/dev/poll:使用于Solaris711/99+,HP/UX11.22+( *** ntport),IRIX6.5.15+和Tru *** UNIX5.1A+。
Eventport:使用于Solaris10.为了防止出现内核崩溃的问题,有必要安装安全补丁。
每个进程允许的最多连接数,理论上每台nginx服务器的更大连接数为worker_processes*worker_connections。
7.client_header_buffer_size4k;
客户端请求头部的缓冲区大小,这个可以根据 *** 分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般 *** 分页都要大于1k,所以这里设置为分页大小。
分页大小可以用命令getconfPAGESIZE取得。
[root@web001~]#getconfPAGESIZE
但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“ *** 分页大小”的整倍数。
8.open_file_cache *** x=65535inactive=60s;
这个将为打开文件指定缓存,默认是没有启用的, *** x指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
这个是指多长时间检查一次缓存的有效信息。
open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
net.ipv4.tcp_ *** x_tw_buckets=6000
timewait的数量,默认是180000。
net.ipv4.ip_local_port_range=102465000
开启重用。允许将TIME-WAITsockets重新用于新的TCP连接。
开启SYNCookies,当出现SYN等待队列溢出时,启用cookies来处理。
web应用中listen函数的backlog默认会给内核参数的net.core. *** xconn *** 到128,而nginx定义的NGX_L *** TEN_BACKLOG默认为511,所以有必要调整这个值。
net.core.netdev_ *** x_backlog=262144
每个 *** 接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的更大数目。
net.ipv4.tcp_ *** x_orphans=262144
*** 中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字, *** 连接将即刻被复位并打印出警告信息。这个 *** 仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_ *** x_syn_backlog=262144
记录的那些尚未收到客户端确认信息的连接请求的更大值。对于有128M内存的 *** 而言,缺省值是1024,小内存的 *** 则是128。
时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
在内核放弃建立连接之前发送SYN包的数量。
如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2内核的通常值是180秒,3.可以按这个设置,但要记住的是,即使机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN-WAIT-2的危险 *** 比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time=30
当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。
三、下面贴一个完整的内核优化设置:
vi/etc/sysctl.confCentOS5.5中可以将所有内容清空直接替换为如下内容:
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.accept_so *** ce_route=0
net.ipv4.tcp_ *** x_tw_buckets=6000
net.ipv4.tcp_rmem=4096873804194304
net.ipv4.tcp_wmem=4096163844194304
net.core.netdev_ *** x_backlog=262144
net.ipv4.tcp_ *** x_orphans=3276800
net.ipv4.tcp_ *** x_syn_backlog=262144
net.ipv4.tcp_mem=94500000915000000 *** 7000000
net.ipv4.tcp_keepalive_time=30
net.ipv4.ip_local_port_range=102465000
使配置立即生效可使用如下命令:
四、下面是关于 *** 连接数的优化
linux默认值openfiles和 *** xuserprocesses为1024
问题描述:说明server只允许同时打开1024个文件,处理1024个用户进程
使用ulimit-a可以查看当前 *** 的所有 *** 值,使用ulimit-n可以查看当前的更大打开文件数。
新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error:too *** nyopenfiles。因此,需要将其改大。
使用ulimit–n65535可即时修改,但重启后就无效了。(注ulimit-SHn65535等效ulimit-n65535,-S指soft,-H指hard)
1.在/etc/rc.local中增加一行ulimit-SHn65535
2.在/etc/profile中增加一行ulimit-SHn65535
3.在/etc/sec *** ity/limits.conf最后增加:
具体使用哪种,在CentOS中使用第1种方式无效果,使用第3种方式有效果,而在Debian中使用第2种有效果
备注:ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软默认显示的是软 ***
soft *** 指的是当前 *** 生效的设置值。hard *** 值可以被普通用户降低。但是不能增加。soft *** 不能设置的比hard *** 更高。只有root用户才能够增加hard *** 值。
五、下面是一个简单的nginx配置文件:
worker_cpu_affinity000000010000001000000100000010000001000000100000
error_log/ *** /log/nginx_error.logcrit;
pid/usr/local/nginx/nginx.pid;
default_typeapplication/octet-stream;
server_names_hash_bucket_size128;
large_client_header_buffers44k;
fastcgi_cache_path/usr/local/nginx/fastcgi_cachel *** ls=1:2
fastcgi_temp_file_write_size8k;
fastcgi_cache_use_staleerrortimeoutinvalid_headerhttp_500;
open_file_cache *** x=204800inactive=20s;
gzip_typestext/plainapplication/x-j *** ascripttext/ *** sapplication/xml;
location~.*\.(gif|jpg|jpeg|png|bmp|swf|js| *** s)$
log_for *** taccess'$remote_addr--$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
access_log/ *** /log/access.logaccess;
二、Nginx的超时timeout配置详解
1、本篇文章主要介绍了Nginx的超时timeout配置详解,我觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随我过来看看吧
2、本文介绍 Nginx的超时(timeout)配置。分享给大家,具体如下:
3、 Nginx处理的每个请求均有相应的超时设置。如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提升 Nginx的 *** 能。
4、 HTTP是一种无状态协议,客户端向服务器发送一个 TCP请求,服务端响应完毕后断开连接。
5、如果客户端向服务器发送多个请求,每个请求都要建立各自 *** 的连接以传输数据。
6、 HTTP有一个 KeepAlive模式,它告诉 webserver在处理完一个请求后保持这个 TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
7、 KeepAlive在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响 *** 能。
8、 Nginx使用 keepalive_timeout来指定 KeepAlive的超时时间(timeout)。指定每个 TCP连接最多可以保持多长时间。Nginx的默认值是 75秒,有些浏览器最多只保持 60秒,所以可以设定为 60秒。若将它设置为 0,就禁止了 keepalive连接。
9、配置段: http, server, locationkeepalive_timeout 60s;
10、指定客户端与服务端建立连接后发送 request body的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx返回 HTTP 408(Request Timed Out)。
11、配置段: http, server, locationclient_body_timeout 20s;
12、客户端向服务端发送一个完整的 request header的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx返回 HTTP 408(Request Timed Out)。
13、配置段: http, server, locationclient_header_timeout 10s;
14、服务端向客户端传输数据的超时时间。
15、配置段: http, server, locationsend_timeout 30s;
16、接收客户端header超时,默认60s,如果60s内没有收到完整的http包头,返回408
17、 Syntax: client_header_timeout time;Default: client_header_timeout 60s;Context: http, serverDefines a timeout for reading client request header. If a client does not tran *** it the entire header within this time, the 408(Request Time-out) error is ret *** ned to the client.
18、接收客户端body超时,默认60s,如果连续的60s内没有收到客户端的1个字节,返回408
19、 Syntax: client_body_timeout time;Default: client_body_timeout 60s;Context: http, server, locationDefines a timeout for reading client request body. The timeout is set only for a period between two successive read operations, not for the tran *** ission of the whole request body. If a client does not tran *** it anything within this time, the 408(Request Time-out) error is ret *** ned to the client.
20、 keepalive时间,默认75s,通常keepalive_timeout应该比client_body_timeout大
21、 Syntax: keepalive_timeout timeout [header_timeout];Default: keepalive_timeout 75s;Context: http, server, locationThe first parameter sets a timeout d *** ing which a keep-alive client connection will stay open on the server side. The zero value disables keep-alive client connections. The optional second parameter sets a value in the“Keep-Alive: timeout=time” response header field. Two parameters *** y differ.
三、nginx tcp 长链接默认多长时间断开链接 如何设置
1、keepalive_timeout:设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
2、client_header_tomeout:设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误。
3、client_body_timeout:设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60。
4、send_timeout:设定响应客户端的超时时间。这个超时仅限于两个链接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
关于nginx设置超时时间的内容到此结束,希望对大家有所帮助。