今天遇到的问题,描述如下
本地配置
ngxin 端口 80
tomcat1 8080
tomcat2 8081
tomcat3 8082
问题:tomcat1,2,3都部署的相同的程序并都启动,nginx对tomcat1和2做了负载均衡,当请求到来的时候,nginx把请求分发给tomat1,2,结果通过查看日志发现tomcat3也在处理请求,百思不解。
原因:程序本身机制问题。当一个请求转发给tomat1或2的时候,tomcat1,2会接受请求并取出请求参数,比如json串取出来,先放到rabbitMQ里而不是直接处理它。程序本身有一个对MQ的监听机制,当程序发现自己处于空闲状态时候,它会主动去MQ里取数据并处理。所以tomcatr3虽然没有接收到nginx转发过来的请求,但是因为它对MQ的监听,使得MQ里队列消息的时候它也会自动去取数据并处理,就导致了如题所描述的问题。
我本将心向明月,奈何明月照沟渠,落花有意随流水,流水无心恋落花。