今天主要是还原一个线上的问题,自己搞了几个机器配置了一下nginx模拟做代理时后端服务器速度跟不上的问题。基本的结构如下

client —->nginx(proxy)—nginx server(limit rps 400/s)

因为我总的就3个机器,所以后端的nginx server里面配置的是

limit_conn_zone  $binary_remote_addr  zone=connzone:10m;
limit_req_zone  $binary_remote_addr  zone=reqzone:10m   rate=400r/s;
server {listen      1081;
server_name  localhost;
keepalive_requests 1000;

简单的对比测试了一下后端限速和不限速的情况。当后端不限速的时候压测时代理proxy 的load非常高,单个核的机器CPU使用率能到100%,usr,sys,soft各占了30%左右,但是后端服务器的load比较低,只有20%左右。当后端机器限速的时候proxy上会出现大量的503,并且load还是很高,基本和前面的相同,但是后端的服务器load也会比较高,在30%–80%间波动。检查后端服务器的日志可以发现很多健康检测的请求被置为了503,也就是存在服务器被踢掉的情况。

另外顺便测试了一下apache的配置,之前的woker的配置``` Timeout 180KeepAlive OnMaxKeepAliveRequests 100KeepAliveTimeout 360

StartServers         10ServerLimit          50MaxClients           1500MinSpareThreads      50MaxSpareThreads      200ThreadsPerChild      50MaxRequestsPerChild  10000