Astuces de Webmaster

Tag: serveur

Mon site est lent, que faire (serveurs dédiés)

by Rom's on 24 nov 2011, under Architecture

Si votre site est lent, il peut y avoir plusieurs raisons :
- ça peut être un problème serveur, un problème de connexion Internet ou une lenteur d’affichage

Pour les problèmes de connexion Internet, on ne peut pas faire grand chose
Pour les problèmes de lenteur d’affichage, les outils Yslow et PageSpeed (en ligne via gtmetrix.com ou couplés à Firebug pour Firefox) vous donneront toutes les informations utiles pour optimiser votre site, la CSS, les images, etc.
On s’intéressera ici à la partie Serveur, les raisons sont souvent parmi les suivantes :
- des requêtes trop lourdes ou trop fréquentes, ou les deux
- des processus (tâches, générations de fichiers) trop longs (parfois à cause des requêtes)
- des serveurs « extérieurs » qui appellent vos scripts/images trop souvent (un gros site qui appelle vos images fera planter votre serveur si vous n’êtes pas dimensionné pour son trafic)

Requêtes trop lourdes

Connectez-vous en ligne de commande (SSH) à votre console MySQL (ou via phpMyAdmin dans l’onglet processus sur l’accueil) et regardez les processus en cours (commande SQL « SHOW FULL PROCESSLIST; »), vous en verrez peut-être des récurrentes, ou des longues. Maintenant, vous savez quoi optimiser.

Si votre processlist est souvent vide ou pleine de « sleep », tout va bien. S’il y a trop de sleep avec une durée trop longue, réduisez votre timeout ou utilisez mysql_connect plutôt que mysql_pconnect. 2mn peut être une durée honnête pour un timeout.

Identifier les scripts consommateurs

Pour identifier les scripts consommateurs, il est intéressant d’utiliser un petit programme : Apachetop (apt-get install apachetop sous debian – comment installer ?)

Pour voir l’état du serveur, il est bon d’utiliser htop (apt-get install htop sous Debian),

Identifier les extérieurs

Pour voir les extérieurs qui appellent vos scripts, rien de tel qu’un bon vieux tail -f /var/log/apache2/error.log (à modifier par votre nom de fichier d’erreur)

Laisser un commentaire :, , , , , , Lien Permanent

Recevoir un e-mail ou SMS si votre serveur est down/tombé (plus de ping) – Debian

by Rom's on 09 mai 2011, under Architecture

Qui n’a pas eu son serveur down alors qu’il était chez IKEA… je viens de mettre en place un simple script qui me permettra de recevoir un e-mail ou un SMS en cas de problème.

Cela nécessite d’avoir deux serveurs, puisque l’un doit faire un « ping » sur l’autre qui doit répondre (« pong »). Appelons le serveur à tester Frodon et celui qui le teste Gandalf.

Sur Gandalf, créez un script sh :
touch /home/checkFrodon.sh
chown u+rwx /home/checkFrodon.sh

Editez ensuite checkFrodon.sh (apt-get install nano si nano n’est pas installé) :
nano /home/checkFrodon.sh

Mettez-y ceci :

ping -c 1 "monsiteatester.fr" > /dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "=> running"
else
echo "=> not running"
mutt -s "[MONSITE] Ping monsisteatester.fr nok - serveur down ?" monemail@gmail.com < /home/checkFrodon.sh
fi

Testez le script en question :
/home/checkFrodon.sh
Cela vous affichera dans le shell suivant les cas "=> running" ou "=> not running". Et si ça vous affiche not running, ça vous enverra un e-mail contenant le contenu du script SHELL pour rappel.

Pour l'automatiser, il vous suffit de créer un cron faisant appel au script en question toutes les minutes, toutes les 5 minutes, toutes les heures, comme vous voulez.

Enjoy !

Surtout, si vous avez mieux, n'hésitez pas !

Oh, je parlais de SMS également, parce qu'il suffit dans la condition de faire appel grâce à la commande wget à la requête explicitée ici : http://api.orange.com/fr/api/sms-api/imprimer

wget http://run.orangeapi.com/sms/sendSMS.xml?id=[votre API Access Key]&from=[numéro court d'émission]&to=[numéro de téléphone]&content=[votre message à envoyer]&long_text=[activer ou non le SMS long]&max_sms=[nombre maximum de "parties" d'un SMS long]&ack=[activer ou non l'accusé de réception]

8,36€ le crédit de 1000 SMS... ça se regarde ! (Cf grille tarifaire Orange)

Bonus : si vous voulez tester qu'une chaine apparaît bien sur une page web (car auparavant, on ne teste que le ping, et un serveur ping même si le serveur web est tombé, il vaut donc mieux tester que le rendu Web se fait bien). Ici, on teste que l'identifiant Google Analytics existe bien dans le code source de la page, mais ça pourrait être autre chose :

cd /tmp/
rm -f /tmp/index.html*
wget monsite.fr
if [ "$(cat /tmp/index.html | grep "UA-XXXXXX-1" )" = "" ] ; then
mutt -s "[MONSITE] apache or mysql down ?" monadresse@gmail.com < /home/checkFrodon.sh
echo "monsite.fr web not running"
else
echo "monsite.fr web running"
fi

2 Comments :, , , , , , Lien Permanent

Synchronisez vos serveurs !

by Rom's on 29 mar 2011, under Architecture

Lorsque vous vous échangez des fichiers avec des partenaires, etc. il est plutôt de bon ton d’être synchro.

Pour cela, rien de plus simple, une commande vous permet de vous synchroniser avec un serveur donné.

Exemple :
ntpdate ntp.univ-lyon1.fr

Après, il vous suffit de programmer un cron (automate) tous les jours à 2, 3 et 4h et vous êtes relativement tranquilles.

Pour rappel, vous pouvez souvent programmer un cron grâce au webmin de votre serveur, rubrique Système > taches cron (si vous n’avez pas webmin, installez-le !) ou en ligne de commande (man crontab si ça vous amuse)

Pour vérifier l’heure de votre serveur, il vous suffit d’afficher la date courante :

echo $(date '+%H.%M.%S')

Laisser un commentaire :, , , , , , Lien Permanent

Quelques commandes SSH utiles / Serveurs dédiés

by Rom's on 15 déc 2008, under Architecture, Développement Web, DSI

Quelques commandes SSH utiles pour tout adminstrateur de serveurs dédiés :

Pour utiliser SSH, utilisez Putty sur Windows, ou le terminal sur Mac et Linux; Sur le terminal, entrez la commande « ssh userSSH@ipServeur » ce qui vous invitera à entrer le mot de passe de l’utilisateur « userSSH ».

top
=> indique les processus appelés
=> pendant l’exécution, taper « A » pour avoir des informations sur les tâches, « U » pour classer les processus par %CPU
=> faire ctrl+C (même sur Mac) pour en sortir

time wget URL
=> vous indique le temps pris pour exécuter telle URL

ps aux
affiche des informations sur les processus en cours
==> ps aux | grep ssh vous permet d’afficher les utilisateurs SSH connectés

find /path/to/directory/ -type f -name « fichier.ext » -exec ls -alF {} \; | grep « toto »
==> permet de faire afficher sous forme de liste avec fichier et date les fichiers trouvés à l’aide de la commande find

stat /path/to/file.ext
==> permet d’avoir plus d’infos sur les dates de création, d’accès et de modification du fichier
ex :

Size: 48 Blocks: 8 IO Block: 4096 regular file
Device: ca01h/51713d Inode: 133791 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1001/masociete) Gid: ( 1001/masociete)
Access: 2011-12-13 16:13:58.000000000 +0100
Modify: 2011-08-01 12:46:01.000000000 +0200
Change: 2011-12-13 16:13:41.000000000 +0100

rename
==> permet de renommer des fichiers en ssh. La fonctionnalité la plus utile est la substitution de chaine
Exemple 1 : remplacer tout les fichiers
rename ‘s/_2\.txt/_6.txt/’ *.txt ==> remplace tous les fichiers « blabla_tout-ce que vous Voulez_2.txt » par « blabla_tout-ce que vous Voulez_6.txt »
la partie en gras est le format standard pour la substitution, la partie en italique indique ce qu’on veut remplacer et par quoi on veut le remplacer, séparés par un simple slashe. la partie soulignée indique dans quels fichiers on veut faire ce remplacement.

find ./ -name « *product*.tpl » -exec cat {} \; | grep « livraison gratuite »
==> permet de trouver toutes les chaines « livraison gratuite » se trouvant dans des *product*.tpl

NB : Cet article va être complété au fur et à mesure du temps et des besoins, n’hésitez pas à proposer des commandes en commentaires

Alsacreations a mis pas mal de commandes utiles aussi, voir ici : http://www.alsacreations.com/tuto/lire/613-Monitoring-serveur.html

voir aussi : http://wiki.debian-facile.org/manuel:commande

Laisser un commentaire :, Lien Permanent