master.png是主服的连接数和请求数 server2.png是分布式2号服务器的连接数和请求数 businessWorker似乎是正常的,但Gateway连接数为啥没起来,总请求数也是一模一样 求助
看起来是客户端并没有向截图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也会慢慢增长。
感谢,已经明白其中原理了!
看起来是客户端并没有向截图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也会慢慢增长。
感谢,已经明白其中原理了!