mercredi 21 janvier 2015

Comment arrêter tous les processus qui tournent sur mon serveur MySQL de manière efficace?

Si comme beaucoup de développeur, vous ne faites pas attention  à vos requêtes SQL et à vos connexions ouvertes sur votre serveur MySQL (ou plutôt à fermer vos connexions Mysql après utilisation) vous vous retrouverais très vite submergé par le nombre de processus en cours d’exécution.

pour afficher l'état actuel des processus MySQL, il suffit de faire un :



mysql> SHOW FULL PROCESSLIST
ce qui donne quelque chose comme:
on reviendra sur l’explication de chaque colonne, et surtout du sens de la colonne state dans un autre billet.
ce qui nous intéresse ici, c'est la 1ere colonne Id  (qui représente simplement l'identifiant du processus en cours d’exécution)

je vois 4 méthodes Pouvoir Arrêter tous les processus en exécution (on dit aussi : tuer, ou killer un processus), :

Le tout manuel  

ça pourrait s'appeler, "tuer les processus MySQL , Pour les NULLS"
exécuter cette requête autant de fois qui'l y a de process sur la liste.
mysql> KILL {Id}; # Id doit simplement être replacé par le véritable identifiant de chaque porcess 
exemples:
mysql> KILL 255;
mysql> KILL 263;
si vous avez 4 ,5 process lours qui tourne, ça ira, si vous avez plus et que vous le faites comme ça, ... je pense qu'une discussion s'impose.... vous avez des soucis pour faire passer le temps durant les longues heures de boulot? 

En 2 requêtes

le principe est simple:
  1. Générer les requêtes "kill" sur une seule chaîne de caractères (séparé par un ;)
  2. Les copier/coller et les exécuter directement
et voici la requête :
select group_concat(concat("kill ",ID) separator ";") from information_schema.processlist;
qui donne:
il suffit donc de copier/coller et d'éxecuter:

Le tout SQL

on reprend exactement le même concept que la méthode précédente, sauf qu'on ne passe pas par du copier/coller (pas toujours possible) Mais en passant plutot par un fichier :
il suffit d'éxecuter :
select group_concat(concat("kill ",ID) separator ";") from information_schema.processlist into outfile '/tmp/kill.txt';
en suite:
source /tmp/kill.txt;

Mode barbare

sysadmins, circulez ya rien à voir :)
en fait, c'est la façon la moins recommandée, Mais la plus simple. 
Il suffit simplement de redémarrer votre serveur MySQL .
un simple

sudo service mysql restart
fait l'affaire

j’espère que cela a pu vous rendre service . n'hésitez pas à laisser des commentaires plus bas si vous connaissez d'autres façon de faire.

mardi 13 janvier 2015

Vagrant ou la fin des problèmes de compatibilité entre les environnements de développement/test/production ?


Pour aller droit au but, si comme moi vous êtes développeur web ou que vous travaillez dans une équipe de développement WEB et que vous êtes déjà retrouvé dans une des situation que je vais cité, Alors cet article est pour vous:
  • AAAAAAAAAAAAAAAAAAAAAAaa, j'ai passé 2 jours pour faire fonctionner le site chez moi en local, car je n'arrivais pas à trouver une version valable de memcached compatible avec mon environnement! 
  • Je me rend bien compte que je devrais utiliser Linux pour avoir un environnement de DEV assez proche de nos serveur de stagging et de prod, et puis question outil, franchement y a pas photo. :) Mais voila, j'ai mes petites habitudes sur windows, et franchement , basculer de système maintenant en plein projet n'est pas une bonne idée (........ cette excuse de "chui en plein projet", je la tire depuis plus de 4 ans :) ...)
  • Puré les gars, vous auriez pu choisir une autre version de cet outil de compilation (ou de cette librairie).... c'est bien, mais je n'arrive pas à trouver une version pour windows!
  • AH NON Said, tu as fait une mise à jour de la configuration du serveur de test, Mais il fallait nous dire pour qu'on fasse de même sur nos environnement de dev!
  • ......................... 

ou encore ma préféré:
  • ça marche pas sur le serveur de test?  Oui Mais Chez moi ça marche!

La solution à ces problèmes est assez simple: La virtualisation.

voici le concept de base:
- Développer sous windows avec un serveur linux sur machine virtuelle  -
Soyez indulgent svp, je suis franchement NAZ pour les dessins .

la solution la plus flexible qui permet de mettre en place très rapidement un environnement de ce type c'est VRAGANT.

Pour bien expliquer la mise en place je vous recommande simplement de regarder cette excellente vidéo  (franchement c'est mieux que de vous écrire plein de texte):



Après avoir regardé la vidéo, ET si vous avez bien tout compris, vous devez certainement vous poser la question suivante:

Pourquoi je dois utiliser VAgrant Finalement? je peux simplement utiliser Virtual box , je partage le fameux dossier pour le code source et le tour est joué!!

je me suis posé la même question voici les réponses :
  1. Possibilité de regrouper un ensemble de machines virtuelles (ex : 1 machine pour le web server, 1 mahcine pour la BDD , ...) et les toutes ensemble en même temps 
  2. Versionning de vos configurations (la configuration des mahcines Vagrant se base sur un simple fichier ruby 
  3. beaucoup de machine pré configuré existent ici http://www.vagrantbox.es/, vous pouvez donc, trés trés .. trés rapidement installer un nouvel environnement sans vous poser trop de question :)   (bon, cela dépend de votre connexion)
je pense sincèrement que cela peut changer complètement votre façon de développer. en tout cas, cela a été le cas pour moi :) 

je vous laisse découvrir et n'hésitez pas à me laisser des commentaires si cela vous a servi (ou pas)
Un grand merci à Abouabkr pour m'avoir fait découvrir

lundi 12 janvier 2015

Nouvelles résolutions 2015

Bonjour à toutes et à tous,


j'ai créé ce blog avec plein de volonté il y a de cela 4 ans ...... et j'avais l’intention de partager mes connaissances/expériences à travers des articles bien écrit ...blablablabla 

Bref vous l'aurez compris en regardant le nombre d'"Articles" produits en 4ans....... d'ailleurs... ce ne sont même pas de vraies articles.je n'ai pas dépassé le statde de volontés 


j'ai 2 explications possibles:

  1. J'ai vu top gros, je voulais tellement bien faire, que cela m'a bloqué
  2. Écrire des articles , ce n'est pas pour moi


je penche en ce moment vers la 2eme explication.


Anyway, j'ai toujours la bonne volonté de partager mes connaissances/expériences, cela pourra toujours aider quelqu'un, Mais je vais essayé de m'y prendre différemment.


Ce blog va être transformé en une sorte de pense bête qui contient -justement- de simples NOTES    d'ou le nom d'origine de ce dernier.

En gros, à chaque fois que je tomberais sur une informations qui me parait intéressante, je partagerais tout simplement avec vous , en espérant que ça puisse profiter à quelqu'un.

Au pire cas, ça me servira comme carnet de notes (histoire me rappeler des astuces que je trouve/utilise -surtout quand je code)

Je me souhaite bon courage 
et je vous souhaite de trouver les astuces que vous cherchez.