IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Limiter utilisation ressources mysql


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Par défaut Limiter utilisation ressources mysql
    Bonjour,

    J'administre un serveur Centos qui héberge un backoffice avec PHP5/MySql5. Mon problème est que certaines pages sont très (très très très vraiment beaucoup) lourdes, cela bloque parfois le serveur.

    Concrêtement, certaines pages font de très lourdes requêtes MySQL. Le processus mysql monopolise alors 100% des ressources pendant plus de 5 min (si si c'est possible, je savais pas avant de le voir non plus...) de sorte que les autres utilisateurs se retrouvent, même avec des pages très légères, complèment bloqués le temps que la grosse page ait fini sa requête.

    J'ai bien trouvé des paramétrages pour limiter l'utilisation mémoire, mais ce que je recherche précisément serait de pouvoir limiter, pour un processus mysql, l'utilisation CPU à 50% par exemple (peu de risque que 2 utilisateurs ouvrent en même temps cette même page).

    Y'a-t-il des configurations miracles pour ce faire ???

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    Pour qu'une requête dure plus de 5 minutes il faut qu'elle soit très complexe sur plusieurs tables avec un très grand nombre de données.

    Ou alors c'est qu'il y a un problème :
    - de modélisation des données ;
    - d'indexation de tables ;
    - de requête pas otpimisée.

    Avant de penser à changer les paramètres du serveur, il faudrait peut-être déjà analyser ça ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Par défaut
    Oui effectivement, en fait c'est un peu délicat car c'est une page sur laquelle 5 types de recherche sont possible avec une même base, donc on construit une requête de base que des variables modifient suivant le type de recherche, ce qui explique que ce n'est pas optimisé. L'autre fait est que ça recherche sur beaucoup de données, de tête ça fait des jointures externes sur plusieurs tables, et sur plus de 600 lignes.

    J'ai repris un développement déjà fait par d'autres, et carrément pas optimisé (j'ai réussi à tout bloquer quelques heures aussi aucune BDD du serveur ne réagissait plus...) sur du MySQL 3 et, pour limiter la casse en attendant de passer en MySQL 5 et de réécrire les principales requêtes, je voudrais juste empêcher pour l'instant la base de se bloquer (parce qu'on a un ecommerce derrière quand même) !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par rolintoucour Voir le message
    Oui effectivement, en fait c'est un peu délicat car c'est une page sur laquelle 5 types de recherche sont possible avec une même base, donc on construit une requête de base que des variables modifient suivant le type de recherche, ce qui explique que ce n'est pas optimisé.
    Ben tu construis la requête dynamiquement en fonction des paramètres de recherche. C'est courant comme système !

    L'autre fait est que ça recherche sur beaucoup de données, de tête ça fait des jointures externes sur plusieurs tables, et sur plus de 600 lignes.
    Lol ! C'est ridiculement petit !
    J'ai fait des requêtes avec des jointures sur des tables de plusieurs dizaines de millions de lignes avec une réponse en moins de 5 secondes, et sur un simple PC portable d'il y a 3 ans !

    sur du MySQL 3
    Il est grand temps de migrer quand même !

    et, pour limiter la casse en attendant de passer en MySQL 5 et de réécrire les principales requêtes, je voudrais juste empêcher pour l'instant la base de se bloquer (parce qu'on a un ecommerce derrière quand même) !
    Tu ne développes quand même pas sur le serveur de prod ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ben tu construis la requête dynamiquement en fonction des paramètres de recherche. C'est courant comme système !
    Oui mais là je rajoute 2 jointures externes sur 2 des paramètres, ce qui fout la merde !

    Citation Envoyé par CinePhil Voir le message
    Lol ! C'est ridiculement petit !
    J'ai fait des requêtes avec des jointures sur des tables de plusieurs dizaines de millions de lignes avec une réponse en moins de 5 secondes, et sur un simple PC portable d'il y a 3 ans !
    Les 600 lignes sont recherchées parmi 8000 autres, c'est juste sur la table principale... Après je regarderai les index c'est une bonne piste, mais les anciens développeurs avaient l'habitude de mettre des LEFT JOIN partout, ce qui est vachement moins optimal qu'un JOIN normal....

    Citation Envoyé par CinePhil Voir le message
    sur du MySQL 3
    Il est grand temps de migrer quand même !


    Tu ne développes quand même pas sur le serveur de prod ?
    ....
    ....
    Ils y a quelques années, le développeur bossait directement sur la base de prod, un suivant a eu la bonne idée de créé une BDD de test mais ça suffit pas... Je voudrais essayer de synchroniser 2 bases distantes plus tard mais je vois pas encore trop comment on fait (y'a un petit retard je crois avec la méthode traditionnelle)...

    Pour en revenir à la question de départ, on peut pas limiter l'utilisation CPU d'un des processus ???

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Je ne suis pas un expert comme CinePhil, mais ton problème ne viens pas de jointures.

    Plus dans la construction de ta requête... tu pourrais nous montré une requête complète pour voir a quoi elle ressemble ?

    Utilises tu des index également ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/07/2011, 11h52
  2. composants à utiliser pour mysql
    Par cedni dans le forum C++Builder
    Réponses: 27
    Dernier message: 02/10/2005, 14h47
  3. Cours, tutoriels, ressources MySQL
    Par Community Management dans le forum MySQL
    Réponses: 0
    Dernier message: 01/09/2005, 00h04
  4. [Eclipse + Tomcat] Utiliser base Mysql de EasyPHP
    Par louvino dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/01/2005, 23h09
  5. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo