Problèmes de stabilité avec l’hyperviseur Xen – kernel debug

Bon, chaque mie à jour de matos à son lot d’emmerdes, et à ce jeux, je n’ai franchement pas de bol 🙁 l’informatique doit m’en vouloir … bref, me voila avec un système Xen Linux qui crash lamentablement dès que sont transférés plusieurs 100ènes de Mo sur une des cartes réseau … perso, je pense que le périphérique virtuel BR (bridge) est moisi, mais bon …
Manque de bol, les logs ne sont pas parlante et surtout rarement accessibles. De fait, j’ai eu besoin de brancher un jolie cable null-modem entre mon server et un portable pour avoir les logs jusqu’au dernier instant. Un petit rappel ici de comment mettre en oeuvre ceci

Tout d’abord, il faut trouver le cable null-modem, je le dit tout de suite, le petit dealer informatique du coin, lui parler null-modem ou chinois c’est kifkif ; j’ai donc trouvé mon bonheur chez un petit vendeur de composants électronique (mais pourquoi ai-je balancé mes tonnes de câbles passés !!!)
Une fois connecté, il est simple de tester la connexion en tapant sur un coté :
tail -f /dev/ttyS0
et de l’autre coté :
echo “coucou” > /dev/ttyS0

L’activation de la console se fait ensuite en modifiant /boot/grub/menu.lst pour ajouter les options suivante sur la ligne de commande, attention dans le cas de xen et d’un kernel normal c’est un peu différent :
Pour xen ajouter à la ligne kernel : loglvl=all guest_loglvl=all com1=9600,8n1 console=com1
¨Pour xen ajouter à la ligne modules : console=hvc0 earlyprintk=xen
Pour Linux ajouter :

Reste ensuite à booter et ecouter, pour l’ecoute je conseille deux terminaux :
cat /dev/ttyS0 > log.out
tail -f log.out
Comme ca on enregistre et affiche en meme temps le résultat dans un fichier.
Pour la vitesse, il serait mieux de passer à 115200 bauds, toutefois, pour ma part, je ne sais pourquoi mais le portable de reception n’a pas eu envie d’aller au dela de 9600bps, ce qui, il faut le dire ralenti grave le boot au point de le planter parfois.

Test de performance d’un serveur Kimsufi

Après avoir utilisé un serveur RPS durant 1 an, j’ai choisi de migrer sur un serveur Kimsufi. Le serveur RPS n’est pas mal mais le disque pose problème : il y a le principe du disque partagé à la bande passante vraiment trop limitée d’une part et la taille de ce disque elle aussi trop contraignante d’autre part.
Le serveur RPS offre un processeur normalement un peu plus rapide (double coeur et fréquence plus élevée) mais dont l’usage semble vraiment limité par le disque pour un usage web faisant appel à une BDD.

Le but de cet article est donc de comparer la performance avec mes petits outils habituels : bonnie++ et lmbench

Test du disque

  • Seq Out Char : Kim ( 33 M/s ) – RPS ( 5 M/s )
  • Seq Out Blk : Kim ( 50 M/s ) – RPS ( 6 M/s )
  • Seq In Char : Kim ( 38 M/s ) – RPS ( 4.7 M/s )
  • Seq In Blk : Kim ( 106 M/s ) – RPS ( 5.7 M/s )
  • Rand. Seek : Kim ( 186 /s ) – RPS ( 113 /s )

Avec un facteur de l’ordre de 10, il est clair que la performance du serveur kimsufi est très loin devant celle du RPS. La perf du RPS est de l’ordre de celle d’un disque NFS sur reseau 100Mb ; soit de l’ordre de 2 fois moindre qu’un disque USB suivant d’autres tests que j’ai pu réaliser. La performance du disque Kimsufi est conforme à des tests effectués sur des disques classiques sata. Ce facteur limitant impacte fortement les performances d’accès à la base de donnée par exemple ; pour le reste, sur un serveur web, hors temps de backup c’est moins critique.

Test du processeur

  • Fork de process : Kim ( 271 ms ) – RPS ( 191 ms )
  • Exec de process : Kim ( 1042 ms ) – RPS ( 654 ms )
  • Calcul int add : Kim ( 0.38 ns ) – RPS ( 0.48 ns )
  • Calcul int mul/div : Kim ( 0.38/23 ns ) – RPS ( 0.19/20.5 ns )
  • Calcul double add : Kim ( 2.26 ns ) – RPS ( 1.91 ns )
  • Calcul double mul/div : Kim ( 3/17 ns ) – RPS ( 1.93 / 10.4 ns)
  • 16p/64K Context switch : Kim ( 24 ms ) – RPS ( 22 ms)
  • Latence TCP : Kim ( 35 us ) – RPS ( 25.2 us)
  • Local comm – TCP : Kim ( 126 M/s ) – RPS ( 474 M/s )
  • Local comm – Bcopy : Kim ( 572 G/s ) – RPS ( 1.1 G/s )
  • Local comm – mem rd : Kim ( 2.2 G/s ) – RPS ( 2.5 G/s )
  • Local comm – mem wr : Kim ( 0.9 G/s ) – RPS ( 1.5 G/s )
  • Memory lantency L1/L2/Main/Rand: Kim ( 1.5/25/70/426 ns ) – RPS ( 1.4/8.1/62.5/180 ns )

Comme convenu la performance du Celeron est en dessous de celle de l’atom d’une génération plus recente avec une fréquence plus élevée et surtout un double coeur. N’empêche que l’écart entre les deux n’est pas d’un facteur 10 pas de 30 à 50% surtout lié aux accès mémoire.

Reste à tester mysql ; pour se faire j’ai utilisé myBench un petit outil tout simple en php :

  • Create 500k record : Kim ( 138 s ) – RPS ( 34 s)
  • Create md5 record / s : Kim ( 3300 ) – RPS ( 12949 )

Résultat plutôt surprenant où je m’attendais à ce que le kimsufi soit largement devant … une petite vérification des fichiers de conf s’impose ! à moins que ce ne soit le bench qui ne travaille que dans le cache …
Voyons donc avec sql-bench qui est distribué avec mysql et couvre plus de tests: (perl run-all-tests –server=mysql –user=.. –password=.. apres avoir créé une base ‘test’ sur mysql)

  • Alter : Kim ( 15s ) – RPS ( 49s )
  • Big-Table : Kim ( 10s ) – RPS ( 7s )
  • Connect : Kim ( 289s ) – RPS ( 121s )
  • Create : Kim ( 119s ) – RPS ( 4680s estimé )
  • Insert : Kim ( 2183s ) – RPS ( 581s estimé )
  • Select : Kim ( 141s ) – RPS ( 58s )
  • Update with key : Kim ( 159s ) – RPS ( 28s )

Etrange comportement du RPS sur les creation de table, j’imagine que celles-ci demande beaucoup d’I/O. Les requetes de select et insert sont beaucoup plus rapide. Ma config ayant beaucoup de cache (pour plier au probleme de disque) la puissance CPU semble prendre le dessus sur les requete insert/select/update et ce avec un facteur important de l’ordre de 2 à 3. Il semble donc, et c’est avec surprise, que la config RPS soit meilleure pour les accès bdd, ce qui pour le coup m’ennuie. On note toutefois que dès lors que l’on sort des conditions optimales, le test n’est pas du tout linéaire …

Voici donc quelques détails supplémentaires avec 1.5M de lignes à traiter:

  • Insert 3×1.5M : Kim ( 705s ) – RPS (146s )

Rien de bien neuf donc… si limite il y a dans la rupture de linéarité, elle est bien au dela des 1.5M de lignes.
Au final, une fois les sites migrés, je constate, à l’aide d’une sonde woozweb, que le temps de chargement moyen du site est 2 fois plus lente avec un KimSufi qu’avec un RPS, mais reste totalement acceptable, situant mes site dans la trache où 40% des sites font mieux pour du java et 9% pour du php basique.

Rotation des logs Apache

Les logs apaches grossissent, grossissent à n’en plus finir … une solution est donc de faire de la rotation de log, c’est à dire de créer un nouveau fichier tous les mois. Pour celà il existe deux solutions:

  • La premiere est de faire faire la rotation par apache en ajoutant une ligne du genre [ CustomLog “|bin/rotatelogs /var/logs/logfile 86400” common ] faisant appel à la fonction rotatelogs.
  • La seconde utilisant le système de rotation des log générique à Linux basé sur logrotate (voir /etc/logrotate.d).

le principal problème du système apache est que le log devient alors indexé, ce qui le rend plus difficile pour un traitement statistique automatique avec awstat par exemple (mais des solutions doivent exister). Pour plus de détails, suivre les liens ci-dessous …

Click to access log_file_rotation.pdf

http://httpd.apache.org/docs/2.0/programs/rotatelogs.html

http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x1670.htm

Installation de NeXpose et problème de langue

Quelques soucis pour installer NeXpose sous Windows et Linux… Le principal problème est que l’installeur ne fonctionne que si la langue du système est anglaise, du coup avant de lancer l’install sous Linux, tapez la commande suivante: export LANG=en_us.UTF-8
Ensuite sous Linux il faut absolument appeler la commande d’install avec ./NeXposeSetup-Linux64.bin et non sh ./NexposeSetup… Donc préalablement il faudra faire un chmod a+x ./NeXposeSetup-Linux64.bin
Enfin, pour ma part j’ai du préciser le chemin pour la jvm : ./NeXposeSetup-Linux64.bin -is:tempdir /home/xxxxx -is:javahome /usr/lib64/jvm/jre/

Bon courage !

Ref de l’erreur initiale:
This application requires a Java Run Time Environment (JRE)to run. Searching for one on your computer was not successful. Please use the command line switch -is:javahome to specify a valid JRE. For more help use the option is:help

Xen, accès à la console principale

Au démarrage d’une VM, si cela est configuré, Xen crée une console graphique accessible par VNC. L’ip est localhost (127.0.0.1) et le port 5900 + ID de la VM.
Attention, cette console est celle à regarder en priorité ( versus xen console nomVm ) car elle contient tous les messages du demarrage, alors que la console texte native elle n’a pas certaines informations, en particulier lors des e2fck …

Empêcher le lancement de e2fsck au boot

Lors d’un boot, l’état des disques est vérifié et un e2fsck est lancé. Cette vérification est clairement bénéfique et système et il est déconseillé de l’outrepasser, mais il arrive qu’elle soit bloquante d’autant qu’une réparation demandera un lancement manuel d’un e2fsck sur une console texte dans un environnement très limité. Il est donc possible de demander au système de ne pas effectuer ce test. Pour celà, il faut simplement modifier le dernier digit de la ligne du fichier fstab pour remplacer le “1” par un “0”

Webmaster anonyme ; est-ce possible ?

Après m’être posé la question de comment créer un site web de façon anonyme sur Internet, je vous livre une petite procédure qui attend vos objections avec impatience… Attention, ceci n’est pas forcement très légal, au moins selon l’usage que vous en faites, et je ne vous recommande pas son usage si ce n’est dans le but pédagogique…

  • Tout d’abord je propose d’acheter une clef usb wifi en liquide pour éliminer les trace liées à l’adresse MAC plus tard. (il y a d’autres solutions, mais celle-ci est sûre)
  • D’installer ensuite une distribution Linux dans une VM pour s’assurer que toutes les trace OS seront vierges
  • Se connecter ensuite depuis un mac-do où l’on a obtenu une clef wep apres paiement de son burger en liquide
  • On ne se connectera au reseau wifi qu’en utilisant la clef wifi associée à la VM
  • L’etape suivante est de se créer un compte email (hotmail, gmail…)
  • Puis un compte paypal associé à cet email
  • Il faut ensuite un compte ebay sur lequel on vendra des produits divers, en exigeant un paiement paypal qui viendra remplir le compte paypal precedemment crée; les objets doivent être envoyés sans traces ; s’ils passent dans une enveloppe c’est mieux pour ne pas laisser de trace chez collisimo
  • En possession d’une identité vituelle et d’un peu d’argent, il est assez simple de trouver un vendeur de noms de domaine et d’hébergement qui accepte le paiement par paypal
  • A ce moment, il me semble que paypal demandera un numéro de carte bleu, là arrive l’opération la plus délicate et franchement illégale (donc à ne pas faire) qui consiste à rentrer le numéro de CB d’autrui. Le compte ne sera pas débité si le montant présent sur le paypal est suffisant ; il n’y aura donc pas de trace
  • Reste à installer le site …

La méthode est simple, je ne vous donne pas toutes les clefs, ceci est une démonstration de principe, c’est tout. Le principal problème est le nombre de burgers à ingérer pour supporter tout le processus.

Le Cloud Computing

Cloud Computing

Mot sur toutes les lèvres lors du Gartner Summit de Londre sur les Data Center, il n’en reste pas moins qu’il s’agit à ce jour plus d’un concept que d’une réalité. Il existe toutefois plusieurs réalités sous-jacentes à ce concept. Réalité qu’il faudra prendre en compte dans les années à venir et qui peuvent radicalement changer notre contexte d’infrastructure, principalement pour ce qui touche à l’industrialisation des applications et à la consolidation.
S’il y a deux termes à retenir dans la notion de cloud, c’est élasticité et facturation au service. Termes qui vont prendre des conotations differentes si l’on parle de cloud privé (infrastructure dont nous sommes propriétaire) ou de cloud publique (infrastructure que nous achetons comme un service à l’extérieur).
Continue reading