Comment peut t'on estimer le nombre max d'utilisateurs simultanées à partir du nombre de connexion maximum simultanées à la db ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je voudrais savoir combien peut on avoir d'utilisateur simultanée sur un site drupal, sachant que le nombre de connexion simultané à la base de données est de 8 ?

Merci

Version de Drupal : 
Tags : 

Réponse courte, 8 utilisateurs car chaque requête, anonyme ou authentifié, avec ou sans cache, avec cache agressif ou pas, ouvre une connexion.

Réponse moins courte, 8 utilisateurs authentifiés et autant d'anonyme que tu veux si tu utilises le mode page_cache_fastpath. Ce mode est utilisé entre autre par le module Cache Router. Le principe est d'envoyer une page présente en cache (qui aura donc nécessité une connexion la première fois) avant que drupal n'initialise la couche base de données.

Sur l'aspect théorique, tu peux regarder le code de la fonction _drupal_bootstrap (ligne 1126 du fichier includes/boostrap.inc) qui est en soit suffisamment explicite.

Merci pour ta réponse très clair et très précise.

De ce que j'ai compris drupal gére le cache dans la DB, pour utiliser le mode page_cache_fastpath c'est une option du noyeau ? ou bien il faut rajouter un gestionnaire de cache externe ?

Pour mieux comprendre, il faut connaître les étapes de démarrage de Drupal (effectué pour chaque requêtes) :
1/ Initialisation de la configuration (settings.php et $conf)
2/ Gestion du cache de page "au plus tôt". Cette étape n'existe que si un module implémente la fonction page_cache_fastpath (ex. Cache Router)
3/ Initialisation de la base de données (et donc création d'une connexion)
4/ Filtrage des IP bannies (prend une requête select en base)
5/ Initialisation de la session - Par défaut, Drupal gère les sessions en base de données (lecture de la session existante, écriture d'une session si elle n'existe pas, mise à jour de la session si elle existe). A noter que sous Drupal, même les requêtes anonymes (non authentifiées sont dans une session).
6/ Gestion du cache de page "standard" - C'est ici que drupal va chercher sur le système de cache la page si elle existe. Si tu laisses la configuration de base, drupal ira dans la table cache_page, sinon il utilisera ce que tu as configuré (memcache, cacherouter, etc.)
7/ Initialisation de la langue
8/ Initialisation du chemin de la requête
9/ Initialisation terminale (tout ce qu'il reste encore ;-).

Comme tu peux le voir, si ta requête passe le niveau 2, c'est mort, une connexion est forcement ouverte.

Tu as 3 options pour éviter cela pour les pages anonymes :
- Utiliser un moteur de cache qui exploite la possibilité offerte par le niveau 2 (fast path) tel menu router.
- Mettre devant ton drupal un reverse proxy comme varnish qui va stocker dans son propre cache la page anonyme. A noter qu'il faut pour cela que tu installes Press Flow (une version modifiée de Drupal) à la place de Drupal. Ou alors que tu développes un peu pour expliquer à Varnish dans quel cas il faut cacher (cela revient à remonter un cookie is_anonymous de drupal à varnish, en gros).
- Installer le module boost qui va créer une version statique des pages anonymes qui seront du coups directement servies par apache, sans passer par drupal, et donc sans connexion vers base.

Donc si tu veux qu'un utilisateur anonyme puisse accéder à ton site sans aucune connexion
Avec Boost, le cache de page anonyme est géré sous la forme de fichier statiques.

J'espère que c'est plus clair ainsi.

Le calcul est assez facile à faire.

Une page un peu lourde peut prendre 250ms pour se générer. Avec 8 connexions à la base de données, on peut génerer 8 pages en même temps. En conséquence, on peut espérer génerer 32 pages par seconde.

Mettons qu'un visiteur moyen visite 4 pages en environ 3 minutes (hypothèses assez proche des moyennes généralement constatés). En conséquence, chaque visiteur visite 4 / (60 * 3) = 0.22 pages par seconde.

Au total, on peut donc espérer servir en pic 32 / 0.22 = 150 utilisateurs simultanés.

(tout cela sous l'hypothèse d'une absence complète de cache de page)

Merci pour l'exemple de calcul et les chiffres de réference.

Cela sous entend néanmoins qu'une page a besoin que d'une connexion. Est ce toujours vrai dans Drupal, ou cela peut dépendre des modules ?