Attaque d'un pirate ?

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour à tous,

Il y a quelques semaines, j'ai eu un différend avec le développeur qui avait travaillé sur le développement du back-office du site Internet de l'agence que je dirige.

Depuis samedi, comme par hasard (même peut-être est-ce seulement un hasard), toutes les pages JPS du site affichent une belle erreur HTTP Status 500 (le site est sur Apache Tomcat), ce qui est plutôt dramatique pour le "sérieux" de ma société.

Quand j'essaie de me connecter à ma base SQL pour savoir ce qui se passe, voilà ce qui s'affiche :

phpMyAdmin - error
#1226 - User 'blabla' has exceeded the 'max_connections' resource (current value: 50)

Le service technique de mon herbergeur althosting m'a alors répondu ceci :
1) Un de vos scripts semble se connecter a la base mysql mais ne se referme pas nous avons plusieurs centaines de connection de votre utilisateur en mode sleep, merci de remedié à ce problème.
2) Il semble qu'il y ai quelque part sur votre site une fonction qui se connecte en permanence sur le serveur sans jamais se deconnecter (les requetes restent en mode sleep) d'ou l'erreur que vous obtenez.
3) Vous n'etes pas en mesure de vous connecter car il y a trop de connection actuellement de votre compte sur le serveur sql, il semble que ce soit votre site qui crée ses connections , sans doute une requete sql non fermé, nous avons reseter votre nombre de connection votre site devrait donc remarcher mais il faudrait pouvoir identifier la requete qui pose problème.

Effectivement, depuis qu'ils ont "reseté" la chose, ça marche, mais la liste des processus de la base SQL s'allonge minute après minute :

ID Utilisateur Serveur Base de don. Commande Durée
16743 blabla localhost:2611 blabla Sleep 1550
16744 blabla localhost:4823 blabla Sleep 1523
16746 blabla localhost:4851 blabla Sleep 1425
16748 blabla localhost:1917 blabla Sleep 1346
16749 blabla localhost:3083 blabla Sleep 1308
16753 blabla localhost:3246 blabla Sleep 1259
16755 blabla localhost:3176 blabla Sleep 1242
16760 blabla localhost:2721 blabla Sleep 1180
16815 blabla localhost:1346 blabla Sleep 956
16825 blabla localhost:1955 blabla Sleep 904
16842 blabla localhost:1237 blabla Sleep 674
16844 blabla localhost:2410 blabla Sleep 561
16845 blabla localhost:1358 blabla Sleep 496
16889 blabla localhost:4893 blabla Sleep 386
16903 blabla localhost:4442 blabla Sleep 194
16919 blabla localhost:2445 blabla Sleep 86

Je suis légèrement nul en informatique (je sais programmé en C et HTML, mais rien de plus), mais savez-vous ce qui se passe et ce que je peux faire pour réparer le problème ?

Mille mercis ! :-)
A voir également:

2 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
1) consulter les logs de MySQL contenant un des ID de processus en sleep pour déterminer la requête fautive
2) Déterminer le script contenant cette requête
3) ajouter un mysql_close($mysql_link); à la fin du script pour terminer la connexion au SGBD !
0
Utilisateur anonyme
 
Merci, mais où puis-je trouve ces fameux logs ?

La série noire continue, puisque lorsque j'envoie un fichier sur le serveur via mon FTP, ça me met maintenant :
"Requested action not taken (e.g., file or directory not found, no access)"
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 663
 
#1226 - User 'blabla' has exceeded the 'max_connections' resource (current value: 50)

ça sent les développeurs qui n'ont pas fermé leur connexion réseau une fois leur requête terminée.

Il faut aller débuguer le code de votre application pouvoir où ça merdouille.


Idéalement, tout accès base de données devrait se faire dans un try/catch/finally, en prenant soin de fermer la connexion réseau dans le catch (ou le finally) si un problème survient, afin de ne jamais laisser de connexion ouverte.

Vérifier également s'il n'y a pas de requête qui dure trop longtemps (ou qui ne termine jamais).
0