我在生产中使用HAProxy来平衡对一系列服务器实例的查询,这些服务器实例一次只能处理一个查询(由我们自己决定)。我知道我将haproxy.cfg文件中后端配置的服务器定义行中的maxconn参数设置为1,但是服务器仍然会收到查询,因为我在服务器的日志消息中看到了诸如“查询被拒绝,已经处理”,以及返回给客户机的带有502 http状态代码的HAProxy日志查询。
这是HAProxy的配置:
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local6 debug
根据中的澄清部分(来自MarkR)
我觉得,任何服务器都有一个端口,在这个端口上,服务器的listen()调用会被阻塞(比如tomcat),任何客户端(比如浏览器)都会在这个端口上发出connect()请求,例如,我假设tomcat服务器会这样做(纠正我的错误)。
//original/main single process does below
socket();bind();listen(on default port 80);
loop{
accept();
//app layer logic(i.e., Below activity is done on sepera
我读到passenger是一个多进程服务器,这意味着它可以同时处理多个请求。
我在本地机器上以独立模式运行passenger,并编写了代码来检查passenger是否能够同时运行多个请求。我的代码是:
class Test < ApplicationController
def index
sleep 10
end
end
我同时遇到两个http请求,并期望两个请求在10秒后返回输出,但一个请求在10秒后返回输出,另一个请求在20秒后返回输出。因此,它证明它一次只处理一个请求,而不是同时处理。
是否意味着passenger是单进程服务器而不是多进程服务器?或者我错过了什么。