Nginx配置优化及深入讲解,大家可以听一下
随着访问量的不断增加,需要对Nginx和内核做相应的优化来满足高并发用户的访问,那下面在单台Nginx服务器来优化相关参数。
1) Nginx.conf配置优化:
worker_processes 8;
nginx进程数,建议按照cpu数目来指定,一般为它的倍数。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000
00100000 01000000 10000000;
为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一
个进程分配到多个cpu。
worker_rlimit_nofile 102400;
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打
开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀
,所以最好与ulimit -n的值保持一致。
use epoll;
使用epoll的I/O模型。epoll是Linux内核为处理大批量文件描述符而作了改进的
poll,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用
率。
worker_connections 102400;
每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为
worker_processes*worker_connections。
keepalive_timeout 60;
keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后
继请求时,keepalive-timeout功能可避免建立或重新建立连接。
client_header_buffer_size 4k;
客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个
请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为
分页大小。分页大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s;
这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开
文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;
这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;
open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这
个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive
时间内一次没被使用,它将被移除。
2) Linux内核参数优化:
net.ipv4.tcp_max_tw_buckets = 10000
timewait的数量,默认是180000。
net.ipv4.ip_local_port_range = 1024 65000
允许系统打开的端口范围。
net.ipv4.tcp_tw_recycle = 1
启用timewait快速回收。
net.ipv4.tcp_tw_reuse = 1
开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_syncookies = 1
开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。
Nginx常用配置参数有upstream,主要用于均衡后端多个实例:
Nginx 的upstream目前支持5种算法分配方式:
1) 轮询(默认rr)
每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复自动添加上。
2) Weight权重
指定轮询权重,权重越高,处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况。
3) ip_hash
每个请求根据访问的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一般用于登录会话。
4) fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5) url_hash(第三方)
upstream的 fail_timeout和max_fails参数是用来判断负载均衡upstream中的某个server是否失效。
在fail_timeout的时间内,nignx与upstream中某个server的连接尝试失败了max_fails次,则nginx会认为该server已经失效。在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。
例如在nginx.conf里面配置如下的tdt_app均衡:
upstream tdt_app {
server 10.10.1.11:8080 weight=1 max_fails=2 fail_timeout=30s;
server 10.10.1.12:8080 weight=1 max_fails=2 fail_timeout=30s;
}
Tdt_app均衡两台后端JAVA服务,在30秒内nginx会与后端的某个server通信检测,如果检测连接失败2次,则Nginx会认为该server已经失效,然后踢出转发列表,然后在接下来的30s内,nginx不再讲请求转发给失效的server。
另外,fail_timeout设置的时间对响应时间没影响,这个响应时间是用proxy_connect_timeout和proxy_read_timeout来控制的。
proxy_connect_timeout : Nginx与后端服务器连接的超时时间,发起握手等候响应超时时间。
proxy_read_timeout:连接成功后_等候后端服务器响应时间,其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)。
proxy_send_timeout :后端服务器数据回传时间,在规定时间之内后端服务器必须传完所有的数据。
keepalive_timout:一个http产生的tcp连接在传送完最后一个响应后,还需要等待多少秒后,才关闭这个连接。
Nginx配置优化及深入讲解,大家可以听一下的更多相关文章
- nginx 配置优化的几个参数
nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究 ...
- Nginx配置优化参考
Nginx配置优化参考 ...
- Nginx配置优化详解
如果你已经安装过Nginx并在生产环境中使用,那么Nginx配置优化你一定也要做,这样才能看到Nginx性能,本文就从基本配置优化开始到高层配置教你如何优化Nginx 大多数的Nginx安装指南告诉你 ...
- nginx配置优化提高并发量
1 nginx配置优化提高并发量 worker_processes 2; 这个按照CPU的核数来决定 2 worker_connections 65535; 这个一般设置65535即可 每个进程允许的 ...
- nginx配置优化 第二章
一:常用功能优化: 1:网络连接的优化: 只能在events模块设置,用于防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的ngi ...
- Nginx配置优化
Nginx优化: 并发优化 KeepAlive长连接 压缩优化 配置缓存 两个监控工具: nginx_status:并发统计 Ngxtop:请求统计 Nginx配置并发.长连接.压缩.状态监控: 关闭 ...
- nginx配置优化+负载均衡+动静分离详解
nginx配置如下: #指定nginx进程运行用户以及用户组user www www;#nginx要开启的进程数为8worker_processes 8;#全局错误日志文件#debug输出日志最为详细 ...
- nginx 配置优化(简单)
配置文件 正常运行的必备配置: 1.user username [groupname]:(推荐nginx) 以那个用户身份运行,以在configure指定的用户 ...
- nginx 配置优化的几个参数(转)
nginx配置文件里面需要注意的一些参数 worker_processes 8 nginx要开启的进程数 一般等于cpu的总核数 其实一般情况下开4个或8个就可 我开2个 以了 多了没有太多用每个n ...
随机推荐
- Java基础总结--方法(函数)
---函数的作用---实现特定功能的代码--是一种代码重用的方式---函数的格式---访问修饰符 返回值类型 函数名(参数列表){语句:} 参数列表包含参数的类型和参数名(参数列表要注意顺序)---关 ...
- Spring中的注入方式
在Spring配置文件中使用XML文件进行配置,实际上是让Spring执行了相应的代码,例如: 使用<bean>元素,实际上是让Spring执行无参或有参构造器 使用<propert ...
- label联动checkbox
label联动checkbox时,若label包含在checkbox外层时label不需for属性,设置label的display属性为block时可以使整个div联动.
- LeetCode 581. Shortest Unsorted Continuous Subarray (最短无序连续子数组)
Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...
- 【前端GUI】——网站设计的重要知识点总结&思维导图(一)
前言:网页美术设计具有四大特点,分别为交互性.整合性.多维性以及动态性.完整的网页设计既需要试听元素,也需要版式设计,以求有效的传达信息.在设计的时候,设计者要学会利用框架,也要学会打破框架. 一.优 ...
- 记录下Webapi签名机制
首先,写这篇文章的原因是因为最近某一个项目中的接口被人为调用了,导致了数据库数据被串改.虽然是内部人无意点的,但还是引起了我的担忧,所有整理了下关于Webapi的相关签名机制. 一.我们在开发接口时, ...
- Lambda转sql部分代码保存
public class SqlExpressionTree { public string GetQuerySql<T>(Expression<Func<T, bool> ...
- ECMAScript arguments 对象(摘自W3C)
arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 message.用 argument ...
- css定位讲解
定位分三种:相对定位,绝对定位,固定定位; 相对定位:position:relatve; 绝对定位:position:absolute; 固定定位:position:fixed; 一, ...
- linux终端自定义命令的别名
alias : 给某个命令定义别名. 如:alias gpush='Git push origin HEAD:refs/for/master'这样在终端中,只需要输入 gpush 就ok了.但是只是这 ...