Mon site Web peut traiter simultanément plus de 40 000 personnes et fonctionner rapidement, mais un robot de moteur de recherche va tuer mysql. Cela m'a rendu fou parce qu'une fois que les robots arrivent, le site affichera "Impossible de se connecter: trop de connexions" et je dois redémarrer manuellement mysqld pour récupérer le site. Je m'attaque à cela depuis un an. J'ai fait tant d'ajustements à Apache et mysql tuning et rien ne semble fonctionner. J'ai changé le max_connections de 300 à 1800 à 10000 et cela ne règle pas le problème de bot. J'utilise Amazon Linux et j'ai une énorme instance/serveur. Ram n'est pas un problème. J'ai fait d'innombrables supports techniques et ils ne trouvent rien de mal JAMAIS. Je dois donc supposer que cela a quelque chose à voir avec ma programmation. Je n'utilise pas Wordpress, j'ai construit mon site à partir de zéro mais comme je l'ai dit, il peut gérer 40 000 personnes sans problème. Bots cependant, l'accident.Les robots détruisent mysql avec "trop de connexions". Ce n'est PAS une augmentation du nombre de connexions max
mon script de connexion est simple:
$connect=mysql_connect("localhost","user","password");
if (!$connect)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db",$connect);
La chose étrange est, il y a toujours « 1 » pour les connexions actuelles, même s'il y a 2000 personnes sur le site. C'est pourquoi j'ai l'impression de faire quelque chose de mal avec la connexion à la base de données.
Est-ce que quelqu'un a de l'expérience ou des conseils pour faire fonctionner un site à tout moment avec un trafic de bot intense? S'IL VOUS PLAÎT!!! Je répète, ce n'est pas un problème d'augmentation max_connections.
2 questions: 1) gardez-vous la connexion ouverte pour toute la session de l'utilisateur? ou est-il fermé et ouvert plus d'une fois par session? 2) quand vous avez 40K personnes - vous voulez dire SIMULTANÉMENT? et vous voyez toujours 1 connexion db ?! – carmel
Je lance le script de connexion, puis après les requêtes de sélection je le ferme (même s'il se ferme de lui-même). Oui, je peux avoir 40k simultanément et il montrera 1 connexion dans la liste de processus ssh show. Et je sais que c'est étrange. C'est pourquoi j'ai l'impression de faire quelque chose de mal. Mais la base de données peut gérer toutes ces personnes bien! Juste pas bots et je suis tellement fatigué de cela !! –
Vraisemblablement, les robots touchent votre site web, pas directement votre mysqld. Est-ce que quelque chose en particulier caractérise le trafic de votre bot? Pouvez-vous dire qu'il s'agit de robots provenant des chaînes de l'agent utilisateur, ou sinon, comment le dites-vous? Avez-vous essayé, lorsque vous avez détecté des bots, de répondre avec le statut 503 (surcharge temporaire)? Cela résout-il le problème? Avez-vous essayé de mettre à jour votre code de l'interface 'mysql_' notoirement non fiable et obsolète à' PDO' ou 'mysqli_'? –