一、max_conns
max_conns:最大连接客户端的数量,默认是0,表示不受任何限制,我们通过设置max_conns,可以对服务器起到一种保护的作用。max_conns在老版本是不可以使用的(除了商业版本可以使用),在新版本可以使用。如果使用多个worker(工作进程),那么它的总连接数会超过max_conns(由于多个worker共享内存),每个worker都可以使用最大连接数max_conns。
实验如下:
1.配置imooc.conf
为每个tomcat服务器配置最大连接数都是2。
2.配置nginx.conf
将工作进程修改为1,就不会使用到共享内存了。
3.测试
这里使用jmeter测试,线程数设置为200,间隔0秒,循环次数10
配置请求nginx的信息
点击运行后,查看结果:
我们发现,请求不能全部处理掉,因为连接、释放请求都是需要消耗时间的,那么从我们刚才配置的imooc.conf来看,nginx一次最大能处理6个请求,然后再释放,再可以处理新的6个连接(max_conns总数为:2+2+2)。从结果来看,nginx也是处理6个左右的请求(在6个左右),然后才能处理新的请求,如果请求不过来,就会返回客户端502。
我们现在来测试两台:
结果如下:
从结果来看,请求的成功数在4个左右浮动,如果nginx忙不过来,会返回502,告诉客户端这是一个错误的请求。
接着,我们来测试一台:
结果如下:
从结果来看,请求成功数在2左右浮动。
二、slow_start
slow_start:缓慢地启动,使用了这个参数,就可以使服务器缓慢的加入到集群,而不是一下子就启动。使用场景:某个应用不想一下子迎来很多流量,便于工作人员监控流量从少到多的过程。
如果配置了权重weight,它会把weight覆盖掉,比如配置了weight=10,那么会把权重从0逐个升到10,它是慢慢慢慢去升级的,它会在一段时间里进行升级(也就是配置的时间slow_start=time),其实就是把我们不健康的服务器变成健康的服务器。
默认的slow_start是0,该参数不能使用在 hash(一种负载均衡器) 和 random load balancing (一种负载均衡器)中。如果在 upstream 中只有一台 server,则该参数失效,只能适用于两台或两台以上的服务器。
接下来,我们给集群中的一台服务器配置slow_start为60s
但是,当我们配置好,重新加载配置文件时,发现如下提示。slow_start这个参数只能在付费的商业版使用,开源的版本无法使用。不过,我们在学习的过程中,知道slow_start的原理和怎么配置它就ok了。
三、down与backup
down:标识某个服务器不可用,下面,我们配置使得192.168.3.9这台服务器不可用,它对应的页面是tomcat3
那么,tomcat3这个页面就不会出现,而是tomcat2、tomcat1
backup:备用服务器标识。如果正在使用的服务器全部宕机了,那么被标识为backup的那台服务器就会被用到。
四、max_fails 与 fail_timeout
max_fails:最大的失败次数。如果某一台server失败次数到达了最大的失败次数,那么nginx就认为这台server宕机,挂掉了。nginx会把这台server剔除到外部,客户端新的请求就不会访问到这台挂掉的server了。
max_fails默认值是1。
fail_timeout:失败的时间段。
假设我们配置的max_fails=2,fail_timeout=15s,那么当客户端在15s内请求这台server的次数达到2,那么接下来,nginx会在15s内不让客户端来请求这台server,而会落到其他正常的server上,等到15s过后,客户端请求再次落到这台server上,当请求失败的次数在15s内再次达到2次时,nginx会在15s内不让客户端来请求这台server,如此循环往复。
fail_timeout默认值是10s。
接下来,我们来配置一下,如下图:
实验结果:
由于开始的时候tomcat1是开启的,所以前期tomcat1和tomcat2都可以被访问,之后,tomcat1停掉,只有tomcat1可以被访问。