Limiter nombre visiteurs simultanés ?

WRInaute impliqué
Bonjour, un de mes site a fait l'objet hier soir d'un article élogieux ( :D ) . ET l'affluence a expolé et continue d'exploser.
Sauf que qu'au dela + de 50 à 70 visiteurs simultanés ( le visiteur regarde pas mal de pages) , la base SQL rend l'âme et plante le VDS.
Et quand ca plante pas, ca ralentit, et donc fait tort au site, car il est d'habitude très rapide.
Est-il possible -provisoirement bien sur- au dela d'un certain nombre d'users simultanés, de diriger les visiteurs suivants vers une simple page html dans laquelle l'on explique qu'il faut revenir plus tard ? ou bien limiter le temps de connextion ?
Et cela avec htaccess ?
Merci d'avance ... ca urge, car pour l'instant je surveille, et quand le load dépasse 50 (!), je met à la place de l'index une page html, pendant une demi-heure, le temps que ca se calme un peu.
 
WRInaute passionné
pour moi la solution c'est une gestion de cache. Si elle est bien faite elle affiche la version cache d'une page en cas de saturation de mysql car il vaut mieux une version de la page un peu ancienne qu'un message d'erreur.
 
WRInaute impliqué
Non, cela ne peut pas être caché, chaque visiteur effectue des requètes différentes ( c'est un site médical) , et a des résultats différents d'un autre visiteur.
 
WRInaute accro
c'ets l'intérêtd es hébergement réellement cloudisés (cad virtualisés + "à la dmeande"): tu peux pousser les manettes quand tu le veux pour augmenter les ressoruces matérielles, et tu arrêts quand tu veux. Tu ne paies qu'à ce que tu as consommé.
 
WRInaute accro
au dela + de 50 à 70 visiteurs simultanés la base SQL rend l'âme

si ton site doit devenir un site qui fait des visites, il faut absolument que toutes les pages (sauf le moteur de recherche bien sur) fonctionnent même la base éteinte. 50 Vu simultanée, tu peux les tenir sur un VDS. il suffit de générer le contenu, avec une régénération sur modification
 
Nouveau WRInaute
Bonjour,

Il est assez difficile de répondre directement avec aussi peu d'information.
Quel est votre serveur (ressource disponible) ?
Est-ce un serveur dédié à la base ?
Quel type de base de données ? mysql ?

Effectivement, 50 à 70 utilisateurs simultanés c'est assez faible. La base de données devrait pouvoir supporter plus.

Il se peut que les problèmes viennent de la construction (schéma) de votre base de données. Les requêtes comportent-elles plusieurs jointures ? Est-ce sur des tables avec une grande quantité de données ? Combien y a-t-il de requêtes par utilisateur et par page ? Les tables ont-elles des clés étrangères ? des index ?

Comme vous pouvez le voir il y a beaucoup d'élément qui peuvent être contrôlé afin d'optimiser au mieux les accès à la base. Avec le peu d'information, je pense que la direction à prendre est de réduire le temps d’exécution pour gagner en nombre d'utilisateur
 
WRInaute impliqué
Si la config de ton serveur permet de faire des exec en PHP, tu peux utiliser ce code par exemple :

Code:
	$nb_connectes = exec('ps auxwf | grep httpd | wc -l')/1;
	
	if ($nb_connectes > 50) 
	{
		header("HTTP/1.1 503 Service Unavailable");
		echo "<h1>503 Service Unavailable (too many connections)</h1>"; 
		exit();
	}
 
WRInaute passionné
Sans forcément mettre en cache, "simultané" ne veut RIEN dire !
A la rigueur tu me dis 50 visiteurs par milliseconde, j'accepte la simultanéité mais ça reste faux.

Donc, au niveau de ton site des petites choses à faire pour soulager le SQL.
Si visiteurs > 50
tu désactives des fonctions qui bouffent (par exemple un compteur d'affichage d'une page, ça fait déjà un UPDATE en moins par page).

A noter qu'une optimisation de ton "VDS" (je sais pas ce que c'est, si on me sort un "Virtual" "Dedicated" "Server" je pense arrêter mon travail :p C'est dédié ou ça l'est pas :p)

Comme option pour pallier au plus vite, tu aurais de désactiver le keepalive (un confort en moins pour tes surfeurs, mais un confort en plus pour le serveur).
Au niveau de MySQL, tu pourrais régler des petites options (voir les outils proposés par spout).
 
Discussions similaires
Haut