Je voudrais savoir quel est le nombre maximum de threads que Windows
peut gérer ? Je voudrais écrire un programme serveur qui verra plus de
10.000 clients se connecter et qu'il gèrera chacun dans un thread. Cela
est il raisonnable ? Faut il envisager plusieurs machines ? Et dans ce
cas, comment répartr les threads sur les différentes machines ?
Je voudrais savoir quel est le nombre maximum de threads que Windows peut gérer ? Je voudrais écrire un programme serveur qui verra plus de 10.000 clients se connecter et qu'il gèrera chacun dans un thread. Cela est il raisonnable ?
Non ! Dans les regles de l'art on utilise plutot des IO asynchrone (voir la fin de l'artice de Russinovitch donné par CAstor) et un thread gere plusieurs connections.
En cas d'un nombre elevé de connections tu peux avoir plusieurs threads. Regarde par exemple apache: il a un nombre de thread max et chacun gere n connections.
Dans ton cas je dirais 200 connections / thread, soit 50 thread max. A toi de customiser (ca peut être 100 / 100) en fonction de la bécane, la mémoire, etc.
Faut il envisager plusieurs machines ? Et dans ce cas, comment répartr les threads sur les différentes machines ?
Ben tu lances un instance de ton prog sur chacune des machines, mais faut un stockage des données commun. Pour repartir les clients il te faut soit un frontal qui dispachera les connection, ou faire du round robin DNS (le DNS resolvera sur des IP/serveurs différents pour répartir la charge).
Moi <nomail@nomail_invalid.net> écrivait
news:i7soab$j1a$1@speranza.aioe.org:
Bonjour,
Je voudrais savoir quel est le nombre maximum de threads que Windows
peut gérer ? Je voudrais écrire un programme serveur qui verra plus de
10.000 clients se connecter et qu'il gèrera chacun dans un thread. Cela
est il raisonnable ?
Non ! Dans les regles de l'art on utilise plutot des IO asynchrone (voir la
fin de l'artice de Russinovitch donné par CAstor) et un thread gere
plusieurs connections.
En cas d'un nombre elevé de connections tu peux avoir plusieurs threads.
Regarde par exemple apache: il a un nombre de thread max et chacun gere n
connections.
Dans ton cas je dirais 200 connections / thread, soit 50 thread max.
A toi de customiser (ca peut être 100 / 100) en fonction de la bécane, la
mémoire, etc.
Faut il envisager plusieurs machines ? Et dans ce
cas, comment répartr les threads sur les différentes machines ?
Ben tu lances un instance de ton prog sur chacune des machines, mais faut
un stockage des données commun. Pour repartir les clients il te faut soit
un frontal qui dispachera les connection, ou faire du round robin DNS (le
DNS resolvera sur des IP/serveurs différents pour répartir la charge).
Je voudrais savoir quel est le nombre maximum de threads que Windows peut gérer ? Je voudrais écrire un programme serveur qui verra plus de 10.000 clients se connecter et qu'il gèrera chacun dans un thread. Cela est il raisonnable ?
Non ! Dans les regles de l'art on utilise plutot des IO asynchrone (voir la fin de l'artice de Russinovitch donné par CAstor) et un thread gere plusieurs connections.
En cas d'un nombre elevé de connections tu peux avoir plusieurs threads. Regarde par exemple apache: il a un nombre de thread max et chacun gere n connections.
Dans ton cas je dirais 200 connections / thread, soit 50 thread max. A toi de customiser (ca peut être 100 / 100) en fonction de la bécane, la mémoire, etc.
Faut il envisager plusieurs machines ? Et dans ce cas, comment répartr les threads sur les différentes machines ?
Ben tu lances un instance de ton prog sur chacune des machines, mais faut un stockage des données commun. Pour repartir les clients il te faut soit un frontal qui dispachera les connection, ou faire du round robin DNS (le DNS resolvera sur des IP/serveurs différents pour répartir la charge).