File: connection-scale.txt

package info (click to toggle)
haproxy 3.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 24,612 kB
  • sloc: ansic: 275,408; sh: 3,607; xml: 1,756; python: 1,345; makefile: 1,162; perl: 168; cpp: 21
file content (44 lines) | stat: -rw-r--r-- 1,657 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Problme des connexions simultanes avec un backend

Pour chaque serveur, 3 cas possibles :

  - pas de limite (par dfaut)
  - limite statique (maxconn)
  - limite dynamique (maxconn/(ratio de px->conn), avec minconn)

On a donc besoin d'une limite sur le proxy dans le cas de la limite
dynamique, afin de fixer un seuil et un ratio. Ce qui compte, c'est
le point aprs lequel on passe d'un rgime linaire  un rgime
satur.

On a donc 3 phases :

  - rgime minimal  (0..srv->minconn)
  - rgime linaire (srv->minconn..srv->maxconn)
  - rgime satur (srv->maxconn..)

Le minconn pourrait aussi ressortir du serveur ?
En pratique, on veut :
  - un max par serveur
  - un seuil global auquel les serveurs appliquent le max
  - un seuil minimal en-dessous duquel le nb de conn est
    maintenu. Cette limite a un sens par serveur (jamais moins de X conns)
    mais aussi en global (pas la peine de faire du dynamique en dessous de
    X conns  rpartir). La difficult en global, c'est de savoir comment
    on calcule le nombre min associ  chaque serveur, vu que c'est un ratio
    dfini  partir du max.

Ca revient  peu prs  la mme chose que de faire 2 tats :

  - rgime linaire avec un offset (srv->minconn..srv->maxconn)
  - rgime satur (srv->maxconn..)

Sauf que dans ce cas, le min et le max sont bien par serveur, et le seuil est
global et correspond  la limite de connexions au-del de laquel on veut
tourner  plein rgime sur l'ensemble des serveurs. On peut donc parler de
passage en mode "full", "saturated", "optimal". On peut galement parler de
la fin de la partie "scalable", "dynamique".

=> fullconn 1000 par exemple ?