在nginx中配置负载均衡最小连接数,需要在upstream块中使用least_conn指令。该指令会将请求分配给当前活跃连接数最少的后端服务器,适用于长连接或处理时间差异较大的场景。

如何启用并验证最小连接数策略
要启用该策略,只需在upstream块中添加least_conn即可。Nginx会在每次选择后端时计算各服务器的当前连接数,并选择数值最小的一个。如果多个服务器连接数相同,则按权重轮询。

events {
worker_connections 1024;
}
http {
upstream backend_pool {
least_conn;
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
}
server {
listen 80;
location / {
proxy_pass http://backend_pool;
}
}
}预期结果:当192.168.1.10有5个连接而192.168.1.11只有1个连接时,新请求会被分配给192.168.1.11,即使其权重较低。
最小连接数与权重的交互逻辑
当least_conn与weight同时使用时,Nginx会先比较当前连接数,若连接数不同则选连接数少的;若连接数相同,则按权重比例分配。这意味着高权重服务器在负载均衡时会承担更多请求,但前提是它的当前连接数不高于低权重服务器。

# 假设当前状态 # Server A (weight=3): 10 connections # Server B (weight=1): 5 connections # New request arrives -> Assigned to Server B (fewer connections) # If both have 5 connections: # Server A gets 3 requests, Server B gets 1 request (proportional to weight)
这种机制确保了在高并发下,处理能力强的服务器不会被过度占用,同时兼顾了公平性。
当后端服务器宕机时的行为表现
如果某个后端服务器宕机,Nginx会自动将其从可用列表中移除,并将请求转发到其他健康服务器。此时,最小连接数策略仅作用于剩余的健康服务器。例如,若192.168.1.10宕机,所有请求将只由192.168.1.11处理,直到它恢复。

















