blob: 7c3d902789a714d3cbfe57a6399974f9c306c724 [file] [log] [blame]
Willy Tarreaud1142aa2007-01-07 13:03:59 +01001Problème des connexions simultanées avec un backend
2
3Pour chaque serveur, 3 cas possibles :
4
5 - pas de limite (par défaut)
6 - limite statique (maxconn)
7 - limite dynamique (maxconn/(ratio de px->conn), avec minconn)
8
9On a donc besoin d'une limite sur le proxy dans le cas de la limite
10dynamique, afin de fixer un seuil et un ratio. Ce qui compte, c'est
11le point après lequel on passe d'un régime linéaire à un régime
12saturé.
13
14On a donc 3 phases :
15
16 - régime minimal (0..srv->minconn)
17 - régime linéaire (srv->minconn..srv->maxconn)
18 - régime saturé (srv->maxconn..)
19
20Le minconn pourrait aussi ressortir du serveur ?
21En pratique, on veut :
22 - un max par serveur
23 - un seuil global auquel les serveurs appliquent le max
24 - un seuil minimal en-dessous duquel le nb de conn est
25 maintenu. Cette limite a un sens par serveur (jamais moins de X conns)
26 mais aussi en global (pas la peine de faire du dynamique en dessous de
27 X conns à répartir). La difficulté en global, c'est de savoir comment
28 on calcule le nombre min associé à chaque serveur, vu que c'est un ratio
29 défini à partir du max.
30
31Ca revient à peu près à la même chose que de faire 2 états :
32
33 - régime linéaire avec un offset (srv->minconn..srv->maxconn)
34 - régime saturé (srv->maxconn..)
35
36Sauf que dans ce cas, le min et le max sont bien par serveur, et le seuil est
37global et correspond à la limite de connexions au-delà de laquel on veut
38tourner à plein régime sur l'ensemble des serveurs. On peut donc parler de
39passage en mode "full", "saturated", "optimal". On peut également parler de
40la fin de la partie "scalable", "dynamique".
41
42=> fullconn 1000 par exemple ?
43
44