分布式服务器Gateway连接数不正常

allbluz

master.png是主服的连接数和请求数
server2.png是分布式2号服务器的连接数和请求数
 
businessWorker似乎是正常的,但Gateway连接数为啥没起来,总请求数也是一模一样
求助

2214 1 0
1个回答

walkor

看起来是客户端并没有向截图2所在服务器发送数据。
客户端会连接gateway进程,并将请求转发给某台服务器的businessWorker进程处理。
 
假设a b两个服务器做成分布式即时通讯系统,并且a b服务器都启动了Gateway进程,
如果你连的域名只有一个A记录(假设为a服务器),那么客户端只会连到服务器a的gateway进程,a服务器的gateway的连接数会有变化。而b服务器的gateway进程没有客户端连接(33个连接是内部通讯连接,不是客户端连接),就不会有连接数的变化。a服务器的gateway进程无法将自身的连接本身分发给b服务器。只能将请求转发给b服务器。
 
要想ab服务器的gateway都能接受客户端连接,需要将b服务器的ip也加到域名的A记录中,这样客户端连接的时候会近似随机的方式连接ab中的某个服务器,这样才能做到gateway层面的负载。当然也可以通过lvs slb nginx haproxy等负载均衡方案做gateway负载。
 
不过即使客户端都只连a服务器,a服务器也会有几率把请求转发给b服务器的businessWorker进程。所以即使没有任何客户端连接到b进程,b服务器的bussinessWorker的请求数也会有增加。
 
另外分部署部署后gateway与businessWorker register进程间为了维持连接会定时发送心跳,心跳也会被算作请求被计数在total_request,所以即使整个集群没有任何客户端连接请求,整个集群的total_request也会慢慢增长。
 
 

  • allbluz 2019-01-25

    感谢,已经明白其中原理了!

年代过于久远,无法发表回答
🔝