Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 12h05   #1
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
Par défaut Limiter le temps des requetes

Bonjour,
Comme dit dans le titre je cherche à configurer MySQL afin que la durée des requêtes soient limitées.
J'ai eu récemment des problèmes d'usage CPU à 100% dû à des requêtes qui n'aboutissaient pas, j'ai dû faire un showprocesslist et un kill pour libérer le serveur.
Donc je voudrais savoir s'il existe un paramètre qui me permettrait de limiter la durée d'exécution de toutes les requêtes à 1 minute par exemple.
J'ai fait quelques recherches mais je n'ai rien trouvé pour l'instant.

Cyril.

PS: c'est sur des versions MySQL 5.x
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 11h47   #2
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
Bonjour,
J'ai vraiment un problème avec ces requêtes.
ça arrive régulièrement et ces requêtes me bouffent ma cpu.
Personne n'a un moyen de configurer un serveur MySQL afin qu'il n'autorise pas les requêtes a s'exécuter plus de 1 ou 2 minutes ???
Merci.

Cyril.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 15h29   #3
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
Ne trouves-tu pas que 1 à 2 minutes c'est long pour faire des requêtes ? Peut-être devrais-tu les optimiser ?
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 11h46   #4
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
en fait, les requêtes se font automatiquement, je n'ai pas la main dessus.
Je trouve que 2 minutes c'est beaucoup oui, ce que j'entends par ces chiffres, c'est juste un time out. Certaines requêtes semblent "boucler" donc je voudrais pouvoir les limiter dans le temps pour éviter de saturer mysql.

Cyril.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 10h19   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Et vous attaquez comment votre bdd mysql ?
Ne pouvez-vous pas mettre un time-out au niveau de la connection jdbc ?

Sinon en recherchant sur google avec "mysql timeout query" il y a des débuts de solutions en 1ere page...


Par contre je rebondirai quand même sur ce qu'a dit oneagaindoguys, ne serai-t-il pas intéressant d'analyser un minimum les requêtes "lente" pour savoir ce qui cloche ?

Une requête "lente" peut être dû à :
- manque d'un index
- mauvaise syntaxe
- optimiseur qui gère mal le plan
- ...

Bref, le 1er cas est quand même assez fréquent quand personne n'administre une base et ca doit être à votre porté non ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 14h12   #6
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
Bonjour,
Tout d'abord, bonne année à tous.
La base est connectée via un pool de connexion jdbc (sous glassfish).
Je pense que je vais ma faire un script qui teste les temps d'exécution des query avec les exemples que je vais trouver.
J'espérais juste (même si je savais qu'il n'y avait pas beaucoup d'espoir) qu'il existe un paramètre à implémenter facilement.
Merci à tous.

Cyril.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 11h22   #7
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
Bonjour,
Je reviens pour quelques petites questions:
j'ai trouvé une requête qui fonctionne pas mal:

Citation:
mysql -uroot -ppassword -e 'show processlist\G'|\
egrep -b5 'Time: [6-9]{3,10}'|\
grep 'Id:'|\
cut -d ':' -f2|grep -v '155'|\
sed 's/^ //'|\
while read id
do
mysql -uroot -ppassword 'kill $id;'
done
parfois elle ne fonctionne pas et je ne comprends pas car je ne comprends pas complètement la requête. Quelqu'un peut-il me l'expliquer ???
Notamment les lignes:
egrep -b5 'Time: [6-9]{3,10}'
cut -d ':' -f2|grep -v '155'
et
sed 's/^ //'

Merci d'avance. La première des trois lignes, après le Time, est celle que j'aimerais vraiment comprendre en priorité.

Cyril.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h40   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Ce n'est pas une requête mais un script de commandes système qui se connecte à mysql et récupère la liste des processus puis tue les processus inactifs.

As-tu analysé les requêtes SQL qui prennent trop de temps, comme cela t'a été suggéré ?

Si tu postes l'une de ces requête et la structure des tables impliquées ainsi que le nombre de lignes de chaque table, on pourra peut-être t'aider à optimiser tout ça.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 15h10   #9
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
un script, autant pour moi, j'ai voulu écrire trop vite .
la meilleure solution serait effectivement d'optimiser les requêtes, je suis tout à fait d'accord, mais comme je l'ai dit, je n'ai pas la main sur ces fameuses requêtes... Je ne peux que constater qu'elles saturent le serveur. Ces requêtes sont générées de façon automatique.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 10h55   #10
Invité régulier
 
cyril bft
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : cyril bft

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
C'est bon, pour la ligne qui m'intéresse (Time: )
cela signifie que l'on un temps constitué d'une suite de 3 à 10 chiffres de 6 à 9.

Cyril.
cyril_bft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h12.


 
 
 
 
Partenaires

Hébergement Web