Quelques nouvelles en ce mois de mai

Cela fait un bout de temps que je n’ai pas poster un petit billet alors voici quelques nouvelles :

  • Tout d’abord, si je n’ai pas posté, c’est que j’ai pas mal de travail (comme bien souvent) à tel point que j’en rêve la nuit, plutôt, j’y réfléchis en dormant… (genre faut que j’essaye cela demain… ou bien je me vois en petit paquet ip traversant un routeur via un vpn…)
  • Je travaille en parallèle sur deux-trois projets, un premier sur la migration de serveurs de messagerie (SMTP/POP) vers une seule solution de messagerie (SMTP/POP(s)/IMAP(s)/Webmail) pour un total de 90 000 comptes à migrer. Dans les technologies utilisées : Debian 6.0 comme OS, du Postfix en configuration « virtual mail » pour le SMTP, Dovecot pour le POP/IMAP et leurs pendants SSL, Perdition en tant que reverse proxy POP/IMAP qui va faire de la répartition de charge vers les serveurs Dovecot, un webmail avec RoundCube. Le tout utilisant un référentiel de comptes dans une base MySQL répliquée en master/slave pour l’ensemble des briques logiques déjà citées. Dis comme cela c’est assez simple comme solution à mettre en oeuvre… c’est bien entendu le coté ‘migration’ qui complexifie la tâche, à savoir faire en sorte que les utilisateurs ne s’en rendent pas compte… à priori tous les obstacles techniques sont écartés, reste plus à le refaire sur la future production (la solution étant prototypée avec succès sur des VM) et basculer….
  • Un autre projet c’est la mise en place d’une solution Magento (solution de gestion d’un site e-commerce) en haute disponibilité et haute performance. On est toujours dans l’étape prototypage en VM. Ici les technologies c’est du Debian 6.0, DRBD en master-master (RAID-1 sur un réseau IP), MySQL master-master, Apache, PHP/Zend/APC, Memcached et Varnish. L’étape DRBD m’a coûté 2 jours à cause d’un « no » qui devait être un « yes » dans un petit fichier de configuration… Sinon, tout devrait bien aller…
  • Coté JMeter c’est assez calme, on prépare tranquillement la version suivante (2.4.1).

Voilà ; Voilou…

Nouvelles, JMeter flux parallèles : développement ‘in deep’…

Aucun billet depuis le début de cette nouvelle année, je dois quelques nouvelles à ce blog.

Tout d’abord, j’ai eu un changement d’activité professionnelle en ce début d’année, qui m’accapare beaucoup de temps. Cela devrait se tasser et me permettre d’ajouter quelques billets sur JMeter.

Ensuite, car je travaille « in deep » dans JMeter, je suis en effet entrain d’essayer d’y ajouter un contrôleur « parallèle » pour permettre l’exécution en parallèle de requêtes HTTP pour un même utilisateur virtuel.

Ceci permettra de mieux simuler certains sites web 2.0 qui ont beaucoup de requêtes AJAX, ces dernières utilisant à bon escient les flux parallèles possibles dans un navigateur internet moderne (exemple, Firefox 3.5 c’est 6 flux parallèles). L’idée étant d’avoir un temps de réponses « écran web 2.0 » proche de celui du navigateur. En effet, aujourd’hui avec JMeter, si j’ai un écran d’un site web 2.0 ayant 10 requêtes (1 principale et 9 requêtes ‘ajax’), JMeter fera 10 requêtes en série, et donne donc un temps différent et généralement plus important que le navigateur qui lui, envoie ses 10 requêtes sur 2 à 6 flux parallèles. On peut voir ce phénomène sur Firefox avec le plugin Firebug ainsi qu’au niveau du paramètre network.http.max-persistent-connections-per-server dans Firefox > about:config.

C’est un travail difficile de développement, car la conception applicative de JMeter est « historique » (depuis 1998), et parfois empirique. La gestion des unités d’exécution s’effectuant en 1 thread = 1 VU, avec un ensemble de services disponibles par thread à un niveau élevée (très loin de la requête HTTP). Pour faire des flux parallèles, j’ai besoin de ces services à un niveau très bas (proche de la requête HTTP), et là c’est difficile.

Enfin, je pense avoir réussi à trouver une solution, j’ai maintenant un contrôleur qui sait balancer n flux parallèles, maintenant il faut faire un (gros) travail sur la préservation de l’intégrité des données partagées entre les flux parallèles…

J’espère que je vais réussir complètement à faire ceci.

Ah, j’allais oublier ! Très bonne année 2010 !

./